图像大小调整,Java

时间:2012-06-05 11:45:11

标签: java image resize

有人可以解释为什么这行代码不起作用。没有错误。它根本不会调整图像大小。

image = ImageIO.read(file);

image.getScaledInstance(ImageDisplayBox.getWidth(), ImageDisplayBox.getHeight());
ImageDisplayBox.setIcon(new ImageIcon(image));

我已经查看了Stackoverflow上的其他答案,并注意到很多人使用.getScaledInstance方法。

我(想)可能是因为我把它作为.setIcon - 虽然我不是最好的Java。

图像已打印,但由于尺寸原因仅显示图像的左上角。

2 个答案:

答案 0 :(得分:9)

您忽略了返回的值。你想要:

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对象。

请注意,这并未说明有关更改现有图像的信息。它只是创建一个具有给定大小的 new 图像。

答案 1 :(得分:0)

这应该有效

Image scaled =image.getScaledInstance(ImageDisplayBox.getWidth(),
                                      ImageDisplayBox.getHeight(), 5);
ImageDisplayBox.setIcon(new ImageIcon(scaled));