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

Android 如何更改位图的颜色并在位图中保留阴影?,android,bitmap,paint,colormatrix,Android,Bitmap,Paint,Colormatrix,我在一个android项目中工作,在那里我必须改变墙壁的颜色。对于e.x,如果我拍一张有角的墙的照片,然后选择一些颜色,比如说蓝色。墙的颜色应该改变,使墙看起来像是用这种颜色绘制的。我的意思是说,在改变颜色后,墙角的阴影应该保留下来。墙不应该看起来像画成平面矩形 请告诉我怎么做 提前谢谢。 请尝试下面的链接 或 或 这可能会对您有所帮助。以下是我为完成任务所做的一些事情: public static Bitmap changeImageColor(Bitmap srcBmp, int ds

我在一个android项目中工作,在那里我必须改变墙壁的颜色。对于e.x,如果我拍一张有角的墙的照片,然后选择一些颜色,比如说蓝色。墙的颜色应该改变,使墙看起来像是用这种颜色绘制的。我的意思是说,在改变颜色后,墙角的阴影应该保留下来。墙不应该看起来像画成平面矩形

请告诉我怎么做

提前谢谢。 请尝试下面的链接


这可能会对您有所帮助。

以下是我为完成任务所做的一些事情:

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;
}
public静态位图changeImageColor(位图srcBmp,int-dstColor){
int width=srcBmp.getWidth();
int height=srcBmp.getHeight();
浮动srcHSV[]=新浮动[3];
浮动dstHSV[]=新浮动[3];
Bitmap DSTBAMIT=Bitmap.createBitmap(宽度、高度、配置.RGB_565);
对于(int row=0;row
我已经试过了,谢谢!在第一个链接中,我不知道如何形成颜色矩阵,以获得位图中所需的结果颜色。如果性能很重要,使用一个简单的着色器可以加快大约10000x。