AS3 - 如何从位图中删除所有黑色和灰色,但保留颜色?

时间:2012-12-15 19:45:41

标签: actionscript-3 flash matrix colormatrix colormatrixfilter

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

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

AS3 API提供了有关如何使用treshhold值的非常好的文档。你可以找到它here。他们的例子实际上检查了一定范围的颜色。我已修改他们的示例以解决您的问题。我没有测试过,所以可能需要进行一些调整。

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(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 );
    }          
  }
}