【问题标题】:How to Change the Color of bitmap and retaining shades in bitmap?如何更改位图的颜色并保留位图中的阴影?
【发布时间】:2012-09-26 12:15:28
【问题描述】:

我在一个 android 项目中工作,我必须更改墙壁的颜色。例如,如果我拍摄有角落的墙的照片并选择一些颜色,比如蓝色。墙壁的颜色应该以这样的方式变化,使墙壁看起来好像是用这种颜色粉刷的。我的意思是说改变颜色后应该保留墙角的阴影。墙不应该看起来像画成扁平的矩形。

请告诉我怎么做。

提前致谢。 问候

【问题讨论】:

    标签: android bitmap paint colormatrix


    【解决方案1】:

    【讨论】:

    • 我已经尝试过这些谢谢!在第一个链接中,我没有得到如何形成颜色矩阵来获得我需要的颜色作为位图中的结果颜色。
    【解决方案2】:

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

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

    【讨论】:

    • 如果性能很重要,您可以使用简单的着色器将性能提高约 10,000 倍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多