图像调整大小,Java
问题描述:
有人可以解释为什么这行代码不起作用。没有错误给出。它根本不会调整图像大小。图像调整大小,Java
image = ImageIO.read(file);
image.getScaledInstance(ImageDisplayBox.getWidth(), ImageDisplayBox.getHeight());
ImageDisplayBox.setIcon(new ImageIcon(image));
我看了#2其他答案,发现很多使用.getScaledInstance方法的人。
我(想)这可能是事实,我把它作为.setIcon - 虽然我不是最好的Java。
打印图像,但由于尺寸只显示图像的左上角。
答
您忽略了返回的值。你想:
image = image.getScaledInstance(ImageDisplayBox.getWidth(),
ImageDisplayBox.getHeight(), 5);
或许使事情更清晰:
Image scaled = image.getScaledInstance(ImageDisplayBox.getWidth(),
ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));
从the docs:
创建此图像的缩放版本。将返回一个新的Image对象,默认情况下该对象将呈现指定宽度和高度的图像。即使原始源图像已完全加载,也可以异步加载新的Image对象。
请注意,这并没有说改变现有的图像。它只是创建一个新的图像与给定的大小。
+0
太棒了。非常感谢乔恩。我现在看到我的错误。 – user1437260
答
是
这应该工作
Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(),
ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));
'image.getScaledInstance(ImageDisplayBox.getWidth(),ImageDisplayBox.getHeight(),5);''再5' - 不要使用幻数。这就是定义的常量。 –