RSS

Faster Pixel Loop Itteration

Generally Pixels are looped though using 2 loops, 1 for the width and 1 for the height.

Using multiple loops, can always become a difficult way to manage and I wanted to share another way to accomplish a traverse of a full BitmapData.

//import declerations
import flash.geom.Point;
import flash.display.Bitmap;
import flash.display.BitmapData;
 
//declare your bitmapdata
var bmpd:BitmapData= new BadIdea(1,1)
//declare the bitmap
var bitmap:Bitmap= new Bitmap()
//assign the bitmapdata to the bitmap
bitmap.bitmapData=bmpd
//add the bitmap to the stage
addChild(bitmap)
 
//assign the width and height and calculate the total Pixels this image has
var _wide:int=bmpd.width, var _tall:int=bmpd.height, var totalPixels:int=_wide*_tall
//to take advantage of counting downwards add 1 to the totalPixels
var index:int=totalPixels+1
//create 1 loop that will itterate down from the totalPixels
while(--index>0){
//since we use index-1 in two places, lets limit that amount of times to calculate that
var useIndex:int=index-1
//assign the xCoordinate which is calculated through modolus of the width.
var xPixel:int=useIndex%_wide
//assign the yCoordinate which is calculated by dividing the current index by its width and then floored.  no different then finding PERCENT of a number think of it that way.  0/100 = 0 percent or line 0 1/100 is 1 or line 1 etc
var yPixel:int=int(useIndex/_wide)
//here you can see i set the pixels of the bitmap to red at the given xCoordinate yCoordinate.  This was to show you that all pixels are complete.
bmpd.setPixel(xPixel,yPixel,0xff0000)
}

Your Comment