在我的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;
}
发布于 2018-08-28 03:37:07
你的代码实际上并没有改变任何东西。假设进入循环时,宽度和高度都是200;前两行仅将scaledHeight和scaledWidth设置为200,第三行编辑图像以符合上述变量,然后第四和第五行将其设置为..完全相同的尺寸。如果在循环之前的初始大小调整之后,scaledHeight没有达到150,那么它永远不会达到150。
https://stackoverflow.com/questions/52045825
复制相似问题