如何更改位图的颜色并保留位图中的阴影?

时间:2012-09-26 12:15:29

标签: android bitmap paint colormatrix

我在一个Android项目中工作,我必须改变墙的颜色。对于e.x,如果我拍摄有角落的墙,并选择一些颜色说蓝色。墙的颜色应该改变,使墙看起来好像涂上了那种颜色。我的意思是说在更改颜色后应保留墙角的阴影。墙不应该像平面矩形一样。

请让我知道如何做到这一点。

提前致谢。 此致

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:0)

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

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;
}