これは、私が正しい方法を使用しているかどうかにかかわらず、問題です。正しい方法で、つまり、これを行うためのよりメモリ効率の良い方法はありますか?
1 つの画像ソースを使用します。
String imgurl = "imgreadertest8.png";
BufferedImage loadedimage = ImageIO.read(getClass().getResource(imgurl));
BufferedImage image = ImageIO.read(getClass().getResource(imgurl));
paint() メソッドで画像を描画します。ただし、明るさを設定する必要がある場合があります。
public void setBrightness(float brightness)
{
RescaleOp rescaleOp = new RescaleOp(brightness, 15, null);
rescaleOp.filter(loadedimage, image);
}
同じ画像を 2 回読みました。「最終」の BufferedImage を持つもの (実際には最終的なものではありません...しかし、コンストラクターの外部で使用する必要があるため、このコンテキストでは最終的に使用できません (ここでは表示されませんが、そうです))。テンプレートとして使用され、1 つは編集および描画に使用されます。
詳細:この方法を試す前に、次のことを行いました。
String imgurl = "imgreadertest8.png";
BufferedImage loadedimage = ImageIO.read(getClass().getResource(imgurl));
BufferedImage image = loadedimage;
しかし、画像を編集すると、読み込まれた画像も編集されます。それらは同じオブジェクトだからです。
だから...同じ画像を2回ロードせずに、この画像の明るさを設定する別の方法はありますか?