如何使用Java调整图像大小?

时间:2010-10-25 16:37:33

标签: java image-processing image-resizing

我有一堆48x48图像,我需要16x16版本,而不是存储16x16版本,我想在运行中调整它们的大小。我当前的代码看起来像这样(model.icon()返回48x48图像):

Icon icon = model.icon();
Image image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
return new ImageIcon(image.getScaledInstance(16, 16, Image.SCALE_AREA_AVERAGING));

不幸的是,当运行此代码时,我得到一个16x16黑色方块而不是图像。

3 个答案:

答案 0 :(得分:4)

试试这个。

ImageIcon icon = model.icon();
Image image = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_RGB);
image.getGraphics().drawImage(icon.getImage(), 0, 0, 16, 16, null);
return new ImageIcon(image);

答案 1 :(得分:3)

您需要的信息不仅仅是Icon参考。您需要访问实际图像。您的新图像是黑色正方形,因为您从未设置图像源(即您创建新的黑色图像然后缩放空图像)。

答案 2 :(得分:2)

您没有将图标放入图像中。如果图标是ImageIcon,则可以执行以下操作:

..
Graphics2D g2 = image.createGraphics();
g2.drawImage(icon.getImage(), 0, 0, 16, 16, null);
g2.dispose();
return new ImageIcon(image);