1

我有一堆 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 黑色方块而不是图像。

4

3 回答 3

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);
于 2010-10-25T16:56:43.287 回答
3

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

于 2010-10-25T16:48:48.297 回答
2

您没有将图标放入图像中。如果 icon 是ImageIcon,那么你可以这样做:

..
Graphics2D g2 = image.createGraphics();
g2.drawImage(icon.getImage(), 0, 0, 16, 16, null);
g2.dispose();
return new ImageIcon(image);
于 2010-10-25T16:59:15.863 回答