blog.Ring.idv.tw

Mosaic - 影像處理 for AS2

Mosaic - 影像處理 for AS2

這是之前修課時寫的一個「馬賽克」影像程式~ 不過那時AS3尚未問世~ 我想用AS3重新寫過的話~ 處理速度應該會增進不少~ 留待以後再做試驗~

Mosaic

import flash.display.BitmapData;
function setImage(para:Number):Void
{
	var myBitmapData:BitmapData = BitmapData.loadBitmap("lena");

	var height:Number = myBitmapData.height;
	var width:Number = myBitmapData.width;
	
	//declare a two-dimensional array
	var rgb:Array = new Array(width);
	for(var j:Number = 0 ; j < height ; j++)
		rgb[j] = new Array(height);
	
	//get pixel value to rgb array
	for(var i:Number = 0 ; i < width ; i++)
	{
		for(var j:Number = 0 ; j < height ; j++)
		{
		    rgb[i][j] = myBitmapData.getPixel(i,j);
		}
	}

	var checkedsize = (para < 1) ? 1 : para;
	
	//get index pixel value to temp array
	var temp:Array = new Array();
	for(var i:Number = 0 ; i < width ; i+=checkedsize)
	{
		for(var j:Number = 0 ; j < height ; j++)
		{
			if(i % checkedsize == 0 && j % checkedsize == 0)
			{
			    temp[temp.length] = rgb[i][j];
			}
		}
	}
	
	//set index pixel value to rgb array
	var tmp:Number = 0;
	for(var i:Number = 0 ; i < width ; i+=checkedsize)
	{
		for(var j:Number = 0 ; j < height ; j++)
		{
			if(i % checkedsize == 0 && j % checkedsize == 0)
			{
				for(var m:Number = 0 ; m < checkedsize ; m++)
				{
					for(var n:Number = 0 ; n < checkedsize ; n++)
					{
						rgb[i+m][j+n]=temp[tmp];
					}
				}
				tmp++;
			}
		}
	}

	//set pixel value
	for(var i:Number = 0 ; i < width ; i++)
	{
		for(var j:Number = 0 ; j < height ; j++)
		{
				myBitmapData.setPixel(i,j,rgb[i][j]);
		}
	}
	var mc:MovieClip = this.createEmptyMovieClip("mc", this.getNextHighestDepth());
	mc.attachBitmap(myBitmapData,this.getNextHighestDepth());
}
setImage(20);

2007-05-06 23:21:39

Leave a Comment

Copyright (C) Ching-Shen Chen. All rights reserved.

::: 搜尋 :::

::: 分類 :::

::: 最新文章 :::

::: 最新回應 :::

::: 訂閱 :::

Atom feed
Atom Comment