java - Toolkit.getDefaultToolkit().createImage() 与 ImageIO.read()

标签 java image swing jpeg javax.imageio

我正在使用 Swing 创建一个 UI,我想在 JLabel 中显示图像。我使用的代码如下:

 JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))));

如果我使用 png 图像,效果很好,但是当涉及到 jpg(只有其中一些)时,我得到一张偏红的图像(与之前的图像不同)我在 Paint.NET 中看到)。 我使用的图像是这个:img.jpg

所以我尝试了(作为替代方案):

Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath());
  1. 有人知道为什么会这样吗?是否是不支持的特殊 JPEG 格式?
  2. 我在这个论坛上看到大多数人推荐使用 ImageIO(例如 here)。为什么?

非常感谢

最佳答案

讨论 here ,您的 JPEG 图像可能包含虚假的透明度信息。一种简单的权宜之计是在具有兼容颜色模型的缓冲区中渲染图像,如图所示 here .

关于java - Toolkit.getDefaultToolkit().createImage() 与 ImageIO.read(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12041474/

相关文章:

java - 在 jpanel 中搜索按钮并获取按钮的文本?

列表读取应用程序中的 Java NumberFormatException

java - IPv6 组播示例

java - 当第一个线程完成时在第二个线程中使用 HashMap

android - 显示图像导致内存错误(31961104 字节分配内存不足。)

java - JTree:有人能找出这段代码有什么问题吗

java - 如何在继承的类中返回一个String?

ios - Swift - 如何一次检索多个图像(GCD)?

ios - 在 Twitter 上分享时 GIF 没有动画

java - 自动调整 Swing 组件的大小