【发布时间】:2011-10-18 12:05:42
【问题描述】:
我遇到了一个问题。我的图像太大,所以它放大了相应的 JMenuItem。我不想开发自行车之类的
ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg")
.getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT));
还有其他方法可以实现吗?
【问题讨论】:
我遇到了一个问题。我的图像太大,所以它放大了相应的 JMenuItem。我不想开发自行车之类的
ImageIcon image = new ImageIcon(new ImageIcon("/home/template/img.jpg")
.getImage().getScaledInstance(32, 32, Image.SCALE_DEFAULT));
还有其他方法可以实现吗?
【问题讨论】:
如果您不想在代码中缩放图像(我想这就是您在问题中的意思?),为什么不直接将源图像设置为开始的大小?最简单的解决方案有时是最好的!
另外,getScaledInstance() 通常是个坏主意。 This 解释了原因并提供了更好的调整图像大小的选项。如果您在其他地方使用该图像,那么值得阅读该文章并使用更好的技术(例如 graphics.drawImage())对其进行缩放。但如果您只是在菜单中使用它,那么调整源图像的大小可能是最好的做法。
如果你要调整大小:
BufferedImage image = ImageIO.read("img.jpg");
BufferedImage ret = new BufferedImage(32,32,BufferedImage.TYPE_RGB);
ret.getGraphics().drawImage(image,0,0,32,32,null);
类似的东西应该会给你图像,然后你可以使用 ret 创建你的 ImageIcon。
【讨论】: