1

我希望能够更改图像(特别是位图),以便在 ActionScript 3 中用白色替换所有深灰色和黑色像素,但保留图像中的所有其他颜色。我熟悉 ColorMatrixFilter 和 bitmapdata.threshold,但我不知道如何使用它们来定位我想要删除的颜色或在特定颜色范围内检查。有没有(有效的)方法可以做到这一点?

谢谢你的尽心帮助。

4

1 回答 1

0

AS3 API 提供了关于如何使用阈值的很好的文档。你可以在这里找到它。他们的示例实际上检查了一定范围的颜色。我已经修改了他们的示例以解决您的问题。我还没有测试它,所以它可能需要一些调整。

var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
var pt:Point = new Point(0, 0);
var rect:Rectangle = new Rectangle(0, 0, 200, 200);
var threshold:uint =  0x00A9A9A9; //Dark Grey
var color:uint = 0x00000000; //Replacement color (white)
var maskColor:uint = 0xFFFFFFFF; //What channels to affect (this is the default).
bmd2.threshold(bmd1, rect, pt, ">", threshold, color, maskColor, true);

另一种选择是使用双 for 循环,迭代所有像素并根据像素的值采取特定操作。

for(var y:int = 0; y < height; y++){
  for(var x:int = 0; x < width; x++){
    var currentPixel:uint = image.getPixel( x, y );
    if(currentPixel != color){
      image.setPixel( destPoint.x + j, destPoint.y + i, currentPixel );
    }          
  }
}
于 2012-12-15T22:20:25.330 回答