【问题标题】:How to rezize an ImageIcon? [duplicate]如何调整图像图标的大小? [复制]
【发布时间】:2017-03-12 03:26:09
【问题描述】:

如何调整 ImageIcon 的大小?

假设我们有一个想要在屏幕上显示的 ImageIcon。但是 ImageIcon 太大了,所以我们看不到整个图片。然后希望能够将 ImageIcon 调整为特定的宽度和高度,以使显示的 ImageIcon 更小,以便我们可以在屏幕上看到整个图像。知道如何在 java 中做到这一点吗?

【问题讨论】:

  • 假设您访问了最大的知识库并尝试过,可能是Googling 甚至是StackOverflow,想象一下您在那段时间可能取得的成就
  • @UnholySheep 我尝试使用getScaledInstance() 方法,但该方法仅适用于 Image 类型,不适用于 ImageIcon。然后我尝试将我的 ImageIcon 转换为 Image-object,但 Eclipse 说“无法从 ImageIcon 转换为 Image”
  • @UnholySheep 然后我尝试使用一些东西:public static BufferedImage resize(BufferedImage image, int width, int height) { BufferedImage bi = new BufferedImage(width, height, BufferedImage.TRANSLUCENT); Graphics2D g2d = (Graphics2D) bi.createGraphics(); g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY)); g2d.drawImage(image, 0, 0, width, height, null); g2d.dispose(); return bi; } 尝试调整方法以适应 ImageIcon,但遇到了与我上面的评论相同的问题。
  • @UnholySheep 上面的解决方案(对我来说)似乎比getScaledInstance() 方法更牵强,所以我再试一次。通过以下方式成功将 ImageIcon 转换为 Icon:Image image = (Image) imageIcon.getImage(); 然后在 image 上使用 getScaledInstance()。然后我尝试将图像添加到 JLabel 中,但不接受 image 的对象类型(对象类型为 Image)。然后尝试将image 转换回一个不起作用的 ImageIcon ......所以现在我又回到了第一格

标签: java swing imageicon


【解决方案1】:

您可以使用Image.getScaledInstance(...)Image 调整为所需的固定大小。然后创建您的ImageIcon 并将其添加到JLabel

您可以在The Perils of Image.getScaledInstance() 博客上阅读更多信息和其他建议。

您也可以尝试使用Stretch Icon。这个Icon 将根据JLabel 的可用空间动态调整自身大小。

【讨论】:

    猜你喜欢
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    相关资源
    最近更新 更多