Таким образом, в основном я загружаю изображение в приложение javafx, и после нажатия кнопки «+» или «-» я хочу увеличить или уменьшить яркость изображения. В настоящее время мой метод выглядит следующим образом:
public void increaseBrightness(ActionEvent actionEvent) {
BufferedImage imageToBright = SwingFXUtils.fromFXImage(imageView.getImage(), null);
for(int x=0; x<imageToBright.getWidth(); x++){
for(int y=0; y<imageToBright.getHeight(); y++){
int rgba = imageToBright.getRGB(x,y);
Color color = new Color(rgba, true);
color = new Color(
validatePixelValue(color.getRed() + 10),
validatePixelValue(color.getGreen() + 10),
validatePixelValue(color.getBlue() + 10)
);
imageToBright.setRGB(x,y, color.getRGB());
}
}
imageView.setImage(SwingFXUtils.toFXImage(imageToBright, null));
}
private int validatePixelValue(int value){
if(value > 255){
value = 255;
} else if(value < 0){
value = 0;
}
return value;
}
Он работает, но проблема в том, что значение пикселя будет go выше 255 (например, 251 + 10 закончится как 255, а не 261), его значение будет потеряно - Я имею в виду, что когда я уменьшаю яркость так же, как в методе выше, у меня не будет того же значения (255 - 10 вместо 261 - 10). Можете ли вы сказать мне, как правильно подойти к этой проблеме? Мне разрешено работать только с пикселями, я не могу использовать внешние библиотеки. Заранее спасибо.