我正在尝试在位图中替换它附近的颜色和颜色。
threshold()似乎有效,但似乎必须在确切颜色“<”之前或之后指定确切的颜色“==”或所有颜色&安培; “>” 中加上“< =”和“> =”。我希望mask参数能帮助我找到一种方法,在它被替换之前和之后找到颜色和动态范围的颜色。它的用途是什么?
根据以下示例1和2中的注释:
bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00FF0000);
bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00EE0000);
答案 0 :(得分:1)
如果您尝试进行洪水填充,我认为mask参数不会对您有所帮助。 mask参数允许您忽略测试中的部分颜色。在您的情况下,您想要考虑颜色的所有通道,您只希望匹配模糊。
e.g。如果要替换红色分量为0的所有像素,可以将掩码设置为0x00FF0000,因此它将忽略其他通道。
实现伪代码可能看起来像这样:
input = readPixel()
value = input & mask
if(value operation threshold)
{
writePixel(color)
}
由于掩码将值限制在0x00000000和0x00FF0000之间,然后测试它们是否大于0xFF000000。
答案 1 :(得分:1)
我也做到了这一点,最终,我发现最好创建自己的阈值方法。你可以在下面找到它。一切都在评论中解释。
//_snapshot is a bitmapData-object
for(var i:int = 0; i <= _snapshot.width; i++)
{
for(var j:int = 0; j <= _snapshot.height; j++)
{
//We get the color of the current pixel.
var _color:uint = _snapshot.getPixel(i, j);
//If the color of the selected pixel is between certain values set by the user,
//set the filtered pixel data to green.
//Threshold is a number (can be quite high, up to 50000) to look for adjacent colors in the colorspace.
//_colorToCompare is the color you want to look for.
if((_colorToCompare - (100 * _threshold)) <= _color && _color <= (_colorToCompare + (100 * _threshold)))
{
//This sets the pixel value.
_snapshot.setPixel(i, j, 0x00ff00);
}
else
{
//If the pixel color is not within the desired range, set it's value to black.
_snapshot.setPixel(i, j, 0x000000);
}
}
}