Android Bitmap像素操作返回黑色方块

时间:2015-05-20 15:02:57

标签: java android bitmap

我有一个方法可以改变位图所有像素的饱和度和亮度。 代码:

public static Bitmap change(Bitmap b){
        Bitmap newBitmap = Bitmap.createBitmap(b.getWidth(), b.getHeight(), Bitmap.Config.ARGB_8888);
        for(int x = 0; x < newBitmap.getWidth(); x++){
            for(int y = 0; y < newBitmap.getHeight(); y++){
                float[] hsv = new float[3];
                Color.colorToHSV(b.getPixel(x, y), hsv);
                hsv[1] *= 1.5f;
                hsv[2] *= 1.5f;
                newBitmap.setPixel(x, y, Color.HSVToColor(hsv));
            }
        }
        return newBitmap;
    }

但是当我运行它时,它只返回一个完全黑色的位图。

我已经检查过Color.colorToHSV()方法是否有效,确实如此。所以问题显然在于Color.HSVToColor()或newBitmap.setPixel()

任何人都可以帮我吗?

1 个答案:

答案 0 :(得分:1)

也许新图像具有透明度,与hsv相乘。尝试在Color ARGB中设置透明度。或者你可能会将图像类型从ARGB更改为RGB。 也可以尝试在多打1.5之后添加检查,结果不超过1,如果是,则将其设置为1.您也可以尝试将相乘的像素设置回原始图片。