我有一个方法可以改变位图所有像素的饱和度和亮度。 代码:
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()
任何人都可以帮我吗?
答案 0 :(得分:1)
也许新图像具有透明度,与hsv相乘。尝试在Color ARGB中设置透明度。或者你可能会将图像类型从ARGB更改为RGB。 也可以尝试在多打1.5之后添加检查,结果不超过1,如果是,则将其设置为1.您也可以尝试将相乘的像素设置回原始图片。