我尝试使用下面的代码调整饱和度,但它无法正常工作。我使用了0到1之间的饱和度值。
//deg value range is from 0 to 1.
public static Bitmap adjustSaturation(Bitmap o, float deg)
{
Bitmap srca = o;
Bitmap bitmap = srca.copy(Bitmap.Config.ARGB_8888, true);
for(int x = 0;x < bitmap.getWidth();x++)
for(int y = 0;y < bitmap.getHeight();y++){
int newPixel = saturationChange(bitmap.getPixel(x,y),deg);
bitmap.setPixel(x, y, newPixel);
}
return bitmap;
}
private static int saturationChange(int startpixel,float deg){
float[] hsv = new float[3]; //array to store HSV values
Color.colorToHSV(startpixel,hsv); //get original HSV values of pixel
hsv[1]=hsv[1]+deg; //add the shift to the HUE of HSV array
hsv[1]=hsv[1]%1; //confines hue to values:[0,360]
return Color.HSVToColor(Color.alpha(startpixel),hsv);
}
请建议解决此问题。