java - 涂抹工具的算法?

标签 java android graphics image-processing

我正在尝试实现一种涂抹工具,就像您可以在 Gimp 或 Photoshop 中找到的那样。我尝试了很多变体,但它们都有问题。我尝试在图像上从位置 P1 到 P2 涂抹的基本方法是:

  1. 从 P1 复制当前画笔大小的矩形。
  2. 在 P2 处以低不透明度绘制此矩形。

它看起来不错,如预期的那样有污迹,但我遇到的主要问题是污迹似乎使事情变得更暗。特别是在使用小笔刷间距时,反复涂抹会使该区域变黑。关于我做错了什么或我可以看一些标准算法的任何建议?我看过 Gimp 源代码,但很难理解。

如果重要的话,我在移动设备(Android、Java)上工作,所以速度更快会更可取。

最佳答案

我怀疑您的算法不断地在彼此之上渲染您的矩形,可能会平均它们的值以获得下面的新颜色值。根据您程序的具体设置方式,我敢打赌,由于这种重复平均,RGB 值将变为 0x000000。这也解释了为什么更小的步长距离变黑得更快,因为更多的步长等同于更多的平均。我的换色器也遇到了类似的问题,该换色器反复模糊,边缘变黑。

有关创建您自己的涂抹工具的良好教程可在此处找到:https://web.archive.org/web/20100916174858/http://losingfight.com:80/blog/2007/09/04/how-to-implement-smudge-and-stamp-tools/

不幸的是,这些示例都在 Objective-C 中,但文本很好地解释了正在发生的事情。

希望这对您有所帮助。

关于java - 涂抹工具的算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4004463/

相关文章:

android - 我如何在android中使用外部存储

java - 设置 JFrame 的背景颜色

java - 如何编写代码来搜索数组中的最高值

java - 将特定的 Json 键值插入从 Oracle DB 中提取的 Json 主体中

java - 将可能为 null 的 Double 值转换为不带指数的字符串

android - 查询解析数据库,通过忽略大小写匹配关键字返回

java - 模拟汽车(Java)

android - android 软键盘开启时调整布局

c++ - 使用 DirectX (2D) 创建多层渲染

Java 图形绘图未显示在绘图面板上