Java应用程序中的无限while循环

时间:2018-08-27 19:27:18

标签: java loops while-loop

在我的Java应用程序中,我试图调整图像的大小,直到适合所需的尺寸,但仍保持其原始比例。

以下方法用于调整图像大小。

public BufferedImage ImageScaler(BufferedImage image){
    scaledWidth = (int) image.getWidth() / SCALE_FACTOR * 100;
    scaledHeight = (int) image.getHeight() / SCALE_FACTOR * 100;
    scaledImage = resize(image, scaledHeight, scaledWidth);

    while(scaledHeight > 150){
        scaledHeight = scaledImage.getHeight();
        scaledWidth = scaledImage.getWidth();
        scaledImage = resize(image, scaledHeight, scaledWidth);
        scaledHeight = scaledImage.getHeight();
        scaledWidth = scaledImage.getWidth();
    }

    return scaledImage;
}

while循环进入无限循环。请帮忙。

调整大小方法。

 private static BufferedImage resize(BufferedImage img, int height, int width) {
    java.awt.Image tmp = img.getScaledInstance(width, height, java.awt.Image.SCALE_SMOOTH);
    BufferedImage resized = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
    Graphics2D g2d = resized.createGraphics();
    g2d.drawImage(tmp, 0, 0, null);
    g2d.dispose();
    return resized;
}

1 个答案:

答案 0 :(得分:0)

您的代码实际上并未更改任何内容。假设进入循环时,其宽度和高度均为200;前两行仅将scaledHeight和scaledWidth设置为200,第三行将图像编辑为符合所述变量,然后第四行和第五行将其设置为。再次具有完全相同的尺寸。如果在循环后最初调整大小之前,scaledHeight没有达到150,则永远不会达到。