更改位图中的一个特定颜色

3

我有一个加载位图的ImageView。在这个位图中,我想要用另一种颜色替换所有指定颜色的像素。我已经进行了广泛的搜索,但大多数答案似乎要么是参考使用标准的ColorFilter(将色调应用于所有像素),要么是手动循环遍历所有像素并替换颜色,如果匹配给定的输入颜色。

是否真的没有更标准化的方法只针对单个颜色应用过滤器?或者从位图和给定的单个颜色创建掩模然后使用该掩模应用过滤器?如果我必须手动改变位图并编写代码来更改每个像素,我会非常惊讶!请注意,我还希望确保不破坏抗锯齿等功能。当使用标准的ColorFilter/android:tint时,圆角等处的抗锯齿被保留。我只想为给定的颜色或一系列颜色选择性地应用过滤器。是否有任何API可以实现这一点?

1个回答

0

如果你需要在Android上使用OpenCV,那么这似乎是你需要的东西:https://opencv.org/platforms/android/

在这里,你可以找到查找给定颜色像素的示例:OpenCV Android Green Color Detection

如果你的位图是某种真实照片,并且你正在寻找能够捕捉一部分颜色光谱的工具,那么OpenCV可能是最好的选择。


谢谢。实际上,我不需要支持任何照片;如果我可以替换包含几种不同颜色的图标的所有白色部分(同时保留抗锯齿),那就足够了。例如,想象一下一个包含白色形状、一些灰色文本和一些绿色符号的图像 - 我希望能够用任意颜色替换白色,而不影响灰色或绿色。 - JHH
如果我们谈论的是非常简单的图片,那么我不知道有比这更好的解决方案了:https://xjaphx.wordpress.com/2011/09/28/image-processing-pixel-color-replacement/。这个方法通过迭代像素并手动更改它们的颜色来实现,就像你描述的那样。 - muminers
是的,我有一种感觉,这样做会产生严重的边缘伪影。我希望有一个标准的Android API可以为给定颜色和给定容差生成掩码,但似乎没有。 - JHH
至少我不知道。是的,这样简单的解决方案无法以任何可接受的方式处理阴影或类似的东西。但是openCV可以。选择权在你手中。 - muminers

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接