0

次のコードを使用して画像のサイズを変更しています。一方のパラメーターを負に設定することにより、関数を使用して元の画像と同じアスペクト比を簡単に取得できるためgetScaledInstance、他のパラメーターを自動的に維持してアスペクト比を取得できます。しかし、私が直面している問題はBufferedImage.次のコードを実行した結果として取得できます。BufferedImage他に選択肢がないため、800x600 に設定しました。以前の質問は、アスペクト比を損なうことなく画像のサイズを変更することでした。

public class ResizeImage {
    public static void main(String[] args) throws IOException {
        BufferedImage img1 = new BufferedImage(800, 600,
                BufferedImage.TYPE_INT_RGB);
        img1.createGraphics()
                .drawImage(
                        ImageIO.read(
                                new File(
                                        "C:/Users/Public/Pictures/Sample Pictures/Desert.jpg"))
                                .getScaledInstance(500, -1, Image.SCALE_SMOOTH),
                        0, 0, null);
        ImageIO.write(img1, "jpg", new File(
                "C:/Users/Public/Pictures/Sample Pictures/test/Desert.jpg"));



    }
}

余分な空白の背景を作成する BufferedImage

4

1 に答える 1

2

元の画像の縦横比を取得するために計算を行うことができます

double ratio = img1.getWidth() / img1.getHeigth();

この比率で getScaledInstance を呼び出します

blabla.getScaledInstance(500, (int)500 / ratio, Image.SCALE_SMOOTH);
于 2013-05-14T16:53:17.727 に答える