Бесконечный цикл while в Java-приложении - PullRequest
0 голосов
/ 27 августа 2018

В моем 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 голосов
/ 27 августа 2018

Ваш код ничего не меняет. Предположим, что когда он входит в цикл, ширина и высота равны 200; первые две строки просто устанавливают scaledHeight и scaledWidth на 200, третья редактирует изображение, чтобы соответствовать указанным переменным, а затем четвертая и пятая строки устанавливают его на ... Точно такие же размеры снова. Если после начального изменения размера до цикла scaledHeight не достигнет 150, оно никогда не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...