【发布时间】:2012-04-15 13:28:30
【问题描述】:
我想知道改变图像亮度的最快方法是什么。我已经实现了“RescaleOp”方法,但我不知道这是最快的方法还是还有其他方法。这是我输入图像、更改亮度并返回图像的实现:
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 转换回 Image,因为我的计算机不喜欢渲染 BufferedImages。
【问题讨论】:
-
"...因为我的电脑不喜欢渲染 BufferedImages。"这根本没有意义。你能解释一下吗??
-
每次渲染超过 50 个时,它会严重滞后。在我的情况下,我正在渲染超过 2000 个。但我只需要知道如何以最快的方式改变图像亮度,所以这与问题并没有太大关系。
-
那么我建议最佳解决方案是简单地控制一次渲染的 BufferedImages 的数量。
-
我猜这是一个选项,但我正在渲染一个由瓷砖组成的景观,这会打败这一点。我想我应该把它包括在内。对不起
-
scaleFactor和offset的范围是多少?
标签: java image bufferedimage brightness