Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Toolkit.getDefaultToolkit().createImage()与ImageIO.read()的比较_Java_Image_Swing_Jpeg_Javax.imageio - Fatal编程技术网

Java Toolkit.getDefaultToolkit().createImage()与ImageIO.read()的比较

Java Toolkit.getDefaultToolkit().createImage()与ImageIO.read()的比较,java,image,swing,jpeg,javax.imageio,Java,Image,Swing,Jpeg,Javax.imageio,我正在使用Swing创建一个UI,我想在JLabel中显示一个图像。我使用的代码如下所示: JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg")))); 如果我使用png图像,这很好,但是当涉及到jpg(只有其中一些图像)时,我会得到一个redish图像(与我在Paint.NET中看到的图像不同)。 我使用的图像如下: 所以我试着(作为替代): 有人知道为什么会这样吗?它是一种不受支持的特殊JPEG格

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

 JLabel label = new JLabel(new ImageIcon(ImageIO.read(new File("img.jpg"))));
如果我使用
png
图像,这很好,但是当涉及到
jpg
(只有其中一些图像)时,我会得到一个redish图像(与我在Paint.NET中看到的图像不同)。 我使用的图像如下:

所以我试着(作为替代):

  • 有人知道为什么会这样吗?它是一种不受支持的特殊
    JPEG
    格式吗
  • 我在这个论坛上读到大多数人建议使用ImageIO(例如)。为什么?

  • 非常感谢

    看起来您在ImageIO中发现了一个bug。请阅读。。。(我可以复制红色,但它绝对不是它应该看起来的样子)

    你可以试着

    • 使用其他设置保存JPEG文件
    • 使用其他程序打开/重新保存文件(希望获得更常见的JPEG编码)
    • 或者使用Toolkit方法(如果您不控制图像)

    Toolkit方法的唯一问题是getImage()方法在调用后立即返回,并且加载正在后台线程上进行,因此您无法立即开始使用Image对象

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

    是的。这就是为什么我想知道为什么人们会推荐另一种方式…等等,我在工具包Java文档中找不到任何
    createImage(文件f)
    。当然可以?很抱歉,我正在使用
    createImage(字符串路径)
    ,我编辑了这个问题…另请参见。
    Toolkit.getDefaultToolkit().createImage(new File("img.jpg").getAbsolutePath());