円形や正方形など、特定の形状の画像から bytearray データを取得するにはどうすればよいですか?
このサークル内のピクセルのみを変更したいとしましょう。この Bytearray データを取得するにはどうすればよいですか?
何か案は?
円形や正方形など、特定の形状の画像から bytearray データを取得するにはどうすればよいですか?
このサークル内のピクセルのみを変更したいとしましょう。この Bytearray データを取得するにはどうすればよいですか?
何か案は?
画像の左上を基準にして、円を含む長方形を定義します。
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);
私は実際にこれを使用したりテストしたりしていないので、うまくいかないかもしれません。代わりにand
を使用すると、データの操作が簡単になる場合もあり
ます。getVector()
setVector()