2012-04-15 3 views
1

Мне было интересно, какой самый быстрый способ изменить яркость изображения. Я реализовал метод RescaleOp, но не знаю, является ли это самым быстрым методом или есть другие. Вот моя реализация где вход изображение, изменить яркость, и вернуть изображение:Java: Самый быстрый способ изменить яркость изображения

public static Image setBrightness(Image i) { 
    BufferedImage buff = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    buff.createGraphics().drawImage(i, 0, 0, null); 
    RescaleOp op = new RescaleOp(brightness, offsets, null); 
    BufferedImage buff1 = new BufferedImage(i.getWidth(null), i.getHeight(null), BufferedImage.TYPE_INT_ARGB); 
    buff1.createGraphics().drawImage(buff, op, 0, 0); 
    return Toolkit.getDefaultToolkit().createImage(buff1.getSource()); 
} 

PS: Мне также нужно преобразовать BufferedImage обратно в изображение, потому что мой компьютер не любит рендеринг BufferedImages.

+2

«... потому что мой компьютер не любит рендеринг BufferedImages.» это не имеет никакого смысла. Вы можете объяснить?? – ControlAltDel

+0

Это ужасно ложится всякий раз, когда я делаю более 50 за раз. Я делаю более 2000 в моем случае. Но мне нужно только знать, как быстро изменить яркость изображения, чтобы на самом деле это не касалось вопроса. – MrDrProfessorTyler

+1

Тогда я бы предположил, что оптимальным решением было бы просто контролировать количество создаваемых вами BufferedImages за один раз. – ControlAltDel

ответ

2

Все, что я прочитал, приводит меня к мысли, что RescaleOp лучший, самый быстрый вариант

+0

Хорошо звучит хорошо для меня. Спасибо за помощь – MrDrProfessorTyler

Смежные вопросы