如何将位图着色为纯色
如何将位图着色为纯色,有效地替换具有 alpha > 1 的所有像素。 0 到给定的 RGB 值?另外如何做同样的事情,但保持每个像素的阿尔法?我不是在寻找每像素操作,因为它们往往很慢。
我尝试使用 ColorMatrixColorFilter 和 ColorFilter,它们确实对位图进行着色,但它们是着色而不是执行 100% 着色。
How would one go about tinting a Bitmap to a solid color, effectively replacing all pixels that have an alpha > 0 to a given RGB value? In addition how to do the same thing, but keeping the alpha for every pixel? I'm not looking for per-pixel operations as they tend to be slow.
I tried using a ColorMatrixColorFilter and a ColorFilter, which do tint the Bitmap, but they colorize instead of performing a 100% tint.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我通过使用 PorterDuffColorFilter 解决了这个问题
I solved this by using a PorterDuffColorFilter
只是为了给出更完整的答案。
这将获取一个位图并输出一个新的着色位图:
Just to give a more complete answer.
This will take a bitmap and output a new tinted bitmap:
如果您的位图是要在布局中使用的可绘制对象,则可以创建一个引用原始可绘制对象(例如 .png)的新可绘制对象 (.xml)。
If your bitmap is a drawable that you want to use in a layout, then you can make a new drawable (.xml) that references your original drawable (e.g .png).
Kotlin 解决方案,因为由于某种原因转换其他解决方案导致位图结果被剪切:
Kotlin solution, because for some reason converting the other solutions caused a cut in the bitmap result: