如何更改位图的颜色并保留位图中的渐变色?

5
我正在一个安卓项目中工作,需要更改墙壁的颜色。例如,如果我拍摄了一张有角落的墙壁照片,并选择了蓝色,那么墙壁的颜色应该以这种方式改变,使得墙壁看起来像是被这种颜色涂过。我的意思是,在更改颜色后,墙壁的角落阴影应该保留,而不是看起来像平面矩形被涂上颜色。
请告诉我如何实现。
提前感谢。 敬礼
2个回答

4

我已经尝试过了,谢谢!在第一个链接中,我不知道如何形成颜色矩阵以获得位图中所需的结果颜色。 - Kantesh

1
这是我为完成它所做的事情:

public static Bitmap changeImageColor(Bitmap srcBmp, int dstColor) {

    int width = srcBmp.getWidth();
    int height = srcBmp.getHeight();

    float srcHSV[] = new float[3];
    float dstHSV[] = new float[3];

    Bitmap dstBitmap = Bitmap.createBitmap(width, height, Config.RGB_565);

    for (int row = 0; row < height; row++) {
        for (int col = 0; col < width; col++) {
            Color.colorToHSV(srcBmp.getPixel(col, row), srcHSV);
            Color.colorToHSV(dstColor, dstHSV);

            // If it area to be painted set only value of original image
            dstHSV[2] = srcHSV[2];  // value

            dstBitmap.setPixel(col, row, Color.HSVToColor(dstHSV));
        }
    }

    return dstBitmap;
}

2
如果性能很重要,使用一个简单的着色器可以快约10,000倍。 - whitneyland

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