Java で補間を使用した柔軟な画像スケーリングを実現するにはどうすればよいですか?

DDD
リリース: 2024-11-27 03:20:18
オリジナル
447 人が閲覧しました

How Can I Achieve Flexible Image Scaling with Interpolation in Java?

柔軟な補間による BufferedImage のスケーリング

Java API を使用して BufferedImage のサイズを変更しようとすると、実装は望ましい結果を生成するのに苦労しました。 。このコードは Graphics2D クラスを利用して画像にスケーリング変換を適用しましたが、失敗しました。

問題を分析したところ、提供されたソリューションには補間タイプを指定する機能が欠けていることが明らかになりました。 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);
ログイン後にコピー

このコード スニペットは、AffineTransformOp を使用して画像をリサンプリングする方法を示しています。バイリニア補間により、よりスムーズで正確な結果が得られます。

提供されたコードは、画像を水平方向と垂直方向の両方で均一に拡大縮小することに注目してください。非対称スケーリングの場合、AffineTransform オブジェクト内の各軸に独立したスケーリング係数を指定する必要があります。

以上がJava で補間を使用した柔軟な画像スケーリングを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート