ホームページ >Java >&#&チュートリアル >Java で BufferedImage を適切にスケールする方法: リサンプリングとクロッピング?

Java で BufferedImage を適切にスケールする方法: リサンプリングとクロッピング?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-21 07:45:12515ブラウズ

How to Properly Scale a BufferedImage in Java: Resampling vs. Cropping?

BufferedImage のスケーリング: クロップではなく、リサンプリングの詳細を調べる

Graphics2D クラスを使用して BufferedImage をスケーリングしようとすると、期待した結果が得られない可能性がありますこの方法には制限があるためです。 scale() メソッドは、基になる画像データを変更せずに現在のグラフィックス コンテキストを単純に変換します。

AffineTransformOp: リサンプリングに推奨されるソリューション

リサンプリングについては、AffineTransformOp クラスが提供します。補間タイプを指定できるため、柔軟性が向上します。補間は、画像をスケーリングするときに中間ピクセル値を計算する方法を決定します。 AffineTransformOp を使用して画像をスケーリングする例を次に示します。

BufferedImage before = getBufferedImage(encoded);
int w = before.getWidth();
int h = before.getHeight();
BufferedImage after = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
AffineTransform at = new AffineTransform();
at.scale(2.0, 2.0);
AffineTransformOp scaleOp = new AffineTransformOp(at, AffineTransformOp.TYPE_BILINEAR);
after = scaleOp.filter(before, after);

この例では:

  • スケーリング変換を定義するために AffineTransform が使用されます。
  • AffineTransformOp が使用されます。 TYPE_BILINEAR 補間タイプを使用すると、スムーズで高品質な結果が得られます。
  • filter() は変換を適用し、画像を後の BufferedImage にリサンプリングします。

キー ポイント

  • イメージのリサンプリングには、トリミングではなく AffineTransformOp を使用します。
  • 最適な結果を得るには、TYPE_BILINEAR などの適切な補間タイプを選択します。
  • 関連リソースを参照してください。画像のスケーリングに関する追加の例と洞察については、

以上がJava で BufferedImage を適切にスケールする方法: リサンプリングとクロッピング?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。