我正在尝试替换位图中的一种颜色和它附近的颜色。
threshold()似乎有效,但似乎您必须指定确切的颜色“==”或在确切颜色“<”和“>”加上“<=”和“>=”之前或之后的所有颜色。我希望 mask 参数能帮助我找到一种方法来找到要替换的颜色及其前后颜色的动态范围。它的预期用途是什么?
根据示例 1 和 2 下方的评论:
bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00FF0000);
bit.threshold(bit, bit.rect, point, ">", 0xff000000, 0xffff0000, 0x00EE0000);
最佳答案
如果您正在尝试进行洪水填充,我认为 mask 参数对您没有帮助。 mask 参数允许您忽略测试中的部分颜色。在您的情况下,您想要考虑颜色的所有 channel ,您只希望匹配是模糊的。
例如如果要替换红色分量为0的所有像素,可以将掩码设置为0x00FF0000,这样它会忽略其他 channel 。
实现的伪代码大概是这样的:
input = readPixel()
value = input & mask
if(value operation threshold)
{
writePixel(color)
}
您的样本都不会产生任何结果,因为掩码将值限制在 0x00000000 和 0x00FF0000 之间,然后测试它们是否大于 0xFF000000。
关于actionscript-3 - BitmapData类的threshold方法中mask参数有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102816/