将灰度图像转换为颜色

Oce*_*lue 2 graphics android

将灰度图像(1像素/字节)转换为彩色位图的最佳方法是什么 - 使用颜色空间(字节数组形式的RGB)?

我认为这会使用ColorMatrix类,但我无法弄清楚如何使用它实现这一点.

小智 5

从Gray - > RGB转换的算法概述(在我最喜欢的)OpenCV文档:

RGB-> Gray是R,G,B的加权和.Gray-> RGB是来自Gray Value = R,G,B值的直接副本(无缩放).

您可以使用int []并执行双循环将所有灰度值复制到RGB数组,然后可以使用Canvas.drawBitmap(int [],width,offset,height,offset,RGB)绘制到帆布.

//color[], gray[]
for(int y = 0; y < getHeight(); y++){
    for(int x = 0; x < getWidth(); x++){
      color[x+y*w] = 0xff << 24 | gray[x+y*w] << 16 |  gray[x+y*w] << 8 | gray[x+y*w];
    }
}
// make sure to set hasAlpha to be false, or set the 0xff value to be alpha
//canvas.drawBitmap(color, ...)
Run Code Online (Sandbox Code Playgroud)

即使使用ColorMatrix calss,您也必须处理必须将GrayScale位复制到[rgba]值中.ColorMatrix真正用于从ARGB扩展/转换为ARGB.