2010-10-19 4 views
1

Как я могу получить данные bytearray из изображения, находящегося в определенной форме, например, в цикле или квадрате?As3 и Image ByteArray Данные

Предположим, я хочу изменить ТОЛЬКО пиксель внутри этого цикла, как я могу получить данные Bytearray? alt text Любые идеи?

ответ

2

Определите прямоугольник, содержащий круг, относительно левого верхнего угла изображения.

var radius:Number = 100; 
var centerX:Number = 50; 
var centerY:NUmber = 400; 

var rect:Rectangle = new Rectangle(centerX-radius, centerY-radius, radius*2, radius*2); 

Затем с помощью getPixels() вернуть ByteArray пикселей внутри прямоугольника. Теперь вы можете прокручивать каждый пиксель и проверять, содержится ли он внутри круга.

var image:BitmapData; 
var pixels:ByteArray = image.getPixels(rect); 

for(var x:int; x<rect.width; x++){ 
    for(var y:int=0; y<rect.height; y++){ 
     // Read the pixels data -> 
     var pixel:uint = pixels.readUnsignedInt(); 
     // Check this pixels distance from the center to make sure it is inside the circle. 
     var dx:Number = x - radius; 
     var dy:Number = y - radius; 
     if(dx*dx+dy*dy <= radius*radius){ 
      // This pixel is inside the circle. 
      ... 
     } 
    } 
} 

Затем, как только вы изменили его, если вы хотите, вы можете записать его обратно в изображение с помощью setPixels()

image.setPixels(rect, pixels); 

Я на самом деле не используется или испытания какой-либо из этого, поэтому он не может работать ,
Возможно, было бы проще работать с данными, если вы используете вместо этого getVector() и setVector() .