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