Java でサイズ変更後の画質を向上させる方法
画像を大幅に縮小すると、多くの場合、品質が著しく低下することがあります。ただし、分割統治アプローチを採用することで、この問題を軽減し、サイズ変更した画像がより高いレベルの詳細を維持できるようにすることができます。
分割統治方法:
画像を最終的なサイズに直接拡大縮小するのではなく、プロセスを小さなステップに分割します。たとえば、650x748 の画像を 60x60 内に収まるようにサイズ変更するには、まず画像を 325x374 (元のサイズの 50%) に縮小します。次に、再度 162x187 (前のサイズの 50%) に縮小します。最後に、ターゲット サイズの 60x60 に拡大縮小します。これにより、サイズ変更を 1 つの大きなステップで実行した場合よりもはるかに高品質の画像が得られます。
コード例:
public static BufferedImage getScaledInstanceToFit(BufferedImage img, Dimension size) { float scaleFactor = getScaleFactorToFit(img, size); return getScaledInstance(img, scaleFactor); } public static float getScaleFactorToFit(BufferedImage img, Dimension size) { float scale = 1f; if (img != null) { int imageWidth = img.getWidth(); int imageHeight = img.getHeight(); scale = getScaleFactorToFit(new Dimension(imageWidth, imageHeight), size); } return scale; } public static float getScaleFactorToFit(Dimension original, Dimension toFit) { float scale = 1f; if (original != null && toFit != null) { float dScaleWidth = getScaleFactor(original.width, toFit.width); float dScaleHeight = getScaleFactor(original.height, toFit.height); scale = Math.min(dScaleHeight, dScaleWidth); } return scale; }
追加ヒント:
以上がJavaでダウンスケーリングした後も高画質を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。