我正在尝试编写一个图形效果,其中一个圆圈围绕一个图像随着图像弄脏图像(就像Gimp或Photoshop中的涂抹工具的工作方式)。我正在使用的基本算法是:
这样可以正常工作,看起来就像我期望的那样,如果圆圈在图像上一次移动1个像素,图像看起来会变得模糊。
我现在想为涂抹效果添加一些纹理。我有一个位图,其中包含一个油漆blob的图片。上面的算法被修改为以下内容,因此污迹采用了这个油漆斑点的形状:
这几乎可以正常工作,看起来它最初很好,但逐渐涂抹使我的图像中的颜色变暗!如果圆圈经过多次相同的区域,颜色最终会变为黑色。我有什么想法可能做错了吗?
我在Android中实现了上述功能。我发现这个帖子关于Android中的位图(比如我的油漆blob纹理)加载了“预乘alpha”,作者说这会导致他的图像因为它而变得更暗: http://www.kittehface.com/2010/06/androidbitmap-and-premultiplied-alpha.html
我怀疑我遇到了类似的问题,但我不明白发生了什么,并且不知道如何修复它。有没有人对可能发生的事情有所暗示?
答案 0 :(得分:2)
乍一看,图像变暗的原因是前三个步骤中的#3。您将像素覆盖在现有像素上的50%。您可能需要考虑使用原始像素值和新像素值的平均值。您可能想要研究一些模糊算法。