Java で BufferedImage を適切にスケールするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-20 17:02:16
オリジナル
322 人が閲覧しました

How Can I Properly Scale a BufferedImage in Java?

BufferedImage のスケーリング: 総合ガイド

問題の説明

スケーリングの試みJava API を使用して BufferedImage を作成する場合、開発者は次のコードで失敗する結果に遭遇しました。

BufferedImage image = MatrixToImageWriter.getBufferedImage(encoded);
Graphics2D grph = image.createGraphics();
grph.scale(2.0, 2.0);
grph.dispose();
ログイン後にコピー

解決策

Graphics2D を使用して BufferedImage をスケーリングするという概念。 scale() は簡単に見えるかもしれませんが、この操作は実際には基礎となる画像データに影響を与えないことに注意することが重要です。真のスケーリングを実現するには、拡張された柔軟性と補間オプションを提供する 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);
ログイン後にコピー

さらなる考慮事項

ここで示したコード スニペットは、次の例を示しています。リサンプリング。元の画像の元のアスペクト比を維持しながら、希望のサイズで新しい画像を作成する技術です。対照的に、サイズとアスペクト比の両方を変更するトリミングについては、別のスレッドで説明します。さらに、関連する概念のさまざまな例をさらに詳しく調べるために利用できます。

以上がJava で BufferedImage を適切にスケールするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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