柔軟な補間による 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 サイトの他の関連記事を参照してください。