As3和Image ByteArray数据

时间:2010-10-19 03:32:45

标签: actionscript-3 image-processing bytearray decoding

如何从特定形状的图像中获取bytearray数据,例如圆形或方形?

假设我想修改此循环内的像素,如何获取此Bytearray数据? alt text 有什么想法吗?

1 个答案:

答案 0 :(得分: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(),使用数据可能也会更容易 代替。