【问题标题】:Java: Fastest way to change brightness of an imageJava:改变图像亮度的最快方法
【发布时间】: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


【解决方案1】:

我读过的所有内容都让我相信 RescaleOp 是最好、最快的选择

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-13
    • 2021-11-09
    • 2014-02-17
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    相关资源
    最近更新 更多