2014-11-07 3 views
0

Итак, я пытаюсь изменить яркость изображения на короткий промежуток времени, а затем сбросить яркость. Однако, когда я пытаюсь сделать это, изображение становится темным, а не оригинальным. Вот мой кодКак сбросить яркость буферизованного изображения

BufferedImage image = ImageIO.read(getClass().getResource("/image.png")); 
private void changeBrightness(){ 
    RescaleOp bright = new RescaleOp(1.5f, 0, null); 
    RescaleOp normal = new RescaleOp(0.66f, 0, null); 
    image = bright.filter(image, image); 
    wait(0.5); 
    image = normal.filter(image, image); 
} 

Когда этот метод получил название, яркость меняется отлично, но это изменение обратно, что все странно. Изображение становится темным. У меня есть шкала яркости для нормали до 0,66, потому что 2/3 раза 1,5 равна той, которую я хочу. Если кто-то знает, что я делаю неправильно, я был бы признателен за это.

+0

Держите ссылку на оригинал? – MadProgrammer

+0

Я предлагаю создать клон «BufferedImage» и увеличить яркость. Таким образом, вы можете сохранить оригинальную версию и не потерять качество, дважды манипулируя изображением. – Tom

+0

Спасибо, я не знаю, почему я не думал, что это кажется мне очевидным. Большое спасибо, это действительно помогло! – NGSoftware

ответ

1

По сути, вы хотите сохранить ссылку на исходное изображение, так что вместо

image = bright.filter(image, image); 

Вы могли бы сделать ...

BufferedImage filtered = bright.filter(image, null); 
Смежные вопросы