Я пытался настроить насыщенность, используя приведенный ниже код, но он не работает должным образом. Я использовал диапазон значений насыщенности от 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);
}
Пожалуйста, предложите решение этой проблемы.