android - 如何在 Android 中将具有黑色像素的位图转换为另一种颜色?

标签 android colormatrix

我有一个带有一些透明像素的位图,其余主要是黑色(一些黑色像素可能有一些半透明像素)。

我需要重新使用这些位图,并希望能够在运行时从这个位图中创建一个蒙版,然后尝试与另一种颜色(如红色、绿色等)的 block 混合,以便最终结果是相同的图像,但颜色为红色(那些半透明的黑色像素变成半透明的红色像素)。

我已经尝试了各种滤色器和 xfermodes,但一直无法弄清楚。请帮忙!

最佳答案

如果不需要高速,可以使用手动混合像素的简单解决方案。

final Bitmap bmp = /* there your bitmap */;

int w = bmp.getWidth();
int h = bmp.getHeight();

for (int x = 0; x < w; x++) {
  for (int y = 0; y < h; y++) {
    int color = bmp.getPixel(x, y);

    // Shift your alpha component value to the red component's.
    color = (color << 24) & 0xFF000000;

    bmp.setPixel(x, y, color);
  }
}

如果你需要更有效的处理,你必须(至少)使用getPixels方法,或者更可取的是本地处理。

关于android - 如何在 Android 中将具有黑色像素的位图转换为另一种颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158173/

相关文章:

android - Android ColorMatrix setSaturation() 是否支持大于 1 的值?

.net - 关于 ColorMatrix 的解释性文档有什么好的来源吗?

ffmpeg - 如何获得 ffmpeg 的 colorchannelmixer 的颜色矩阵

java - 使用函数更改位图颜色

java - Android:统计应用程序启动次数

java - 在没有 Google Cloud 的情况下同步 Android 设备

c# - WPF相当于GDI+的ColorMatrix

android - 如何验证动态创建的编辑文本

java - 使用数组在 ImageView 上随机生成图像

android - 使用 MapView 抛出 ClassNotFoundException