【问题标题】:Remove custom background from ImageIcon从 ImageIcon 中删除自定义背景
【发布时间】:2015-05-21 12:26:06
【问题描述】:

正如标题所说,如何从 imageIcon 中删除背景?

假设..我有一个JTree(但它可以是每个JComponent),我想为其叶节点设置一个图标。

myDefaultTreeCellRendere.setLeafIcon(new ImageIcon(icon));

图标有白色背景,我想删除它。那可能吗? 我在 Stackoverflow 上阅读了一些答案,但是使用了 BufferedImage,并且该图标是从网络上检索并存储在 URL 对象中的……我的图标是本地的。

【问题讨论】:

  • 在绘图应用程序中移除 BG 是最佳选择。像照片店。如果做不到这一点,一种技巧是在运行时处理图像以删除“白色像素”。如果图像本身有任何白色部分(他们的眼睛的白色部分?)也会变得透明,这将(显然)失败。如果您决定尝试在运行时删除 BG,请将图像上传到图像共享站点并提供链接。 “我在 Stackoverflow 上阅读了一些答案,但是使用了 BufferedImage,并且从网络上检索了图标并将其存储在 URL 对象中......” </head-desk> 大多数适用于 ..
  • .. URL 也适用于文件! (而且网上的很多代码都会通过 URL 热链接到图片。)

标签: java swing background icons jtree


【解决方案1】:

您需要使用支持透明度的图像格式,例如 GIF 或 PNG。您可以寻找具有透明背景的新图标,也可以使用图像编辑器(Photoshop 或 Gimp 都可以)修改当前图像。

【讨论】:

  • 这应该是,图片已经是关于照片购物的部分,评论..
【解决方案2】:

您可以做的是将 ImageIcon 对象的大小与图像的大小相同。例如,如果您的图片尺寸为 40x40,您可以这样做

ImageIcon img = new ImageIcon("path_to_image");
img.setPreferredSize(new Dimension(40, 40));
myDefaultTreeCellRendere.setLeafIcon(img);

+1 如果有效:D

【讨论】:

  • 谢谢。我认为您的解决方案存在问题,因为白色背景是我图像的一部分。所以,我不认为为我的图标设置 preferredSize 可以解决我的问题。无论如何,我会尝试:)
  • 哦!抱歉,有误会。为什么不使用图像编辑器简单地删除白色区域。例如,您可以使用 GIMP 或简单地绘制?
  • "..有一个误解。"您可以随时删除或编辑此答案..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-28
  • 2016-08-06
  • 1970-01-01
  • 2010-09-16
  • 2016-09-14
  • 2021-09-30
相关资源
最近更新 更多