使用ImageIO.read时出现问题

Mar*_*nio 12 java applet swing image image-processing

好的,我有一个我想读的图像.问题是Image.read(file)返回NULL.

File file = new File("C:\\images\\image1.jpg");
if(file.exists()){
    System.out.println("Image file exists.");
    BufferedImage originalImage = ImageIO.read(file);

}
Run Code Online (Sandbox Code Playgroud)

因此图像存在但ImageIO.read(file)返回NULL.没有抛出的错误没有!这是怎么回事?

这是我到目前为止所尝试的:

  1. 好的,我的环境是Windows 7.我测试了Windows附带的其中一个图像,并且能够读取图像.
  2. image1.jpg是由另一个系统创建的.现在确定他们使用的是什么方法.
  3. 我尝试将图像转换为RGB,如此处建议链接文本, 但它失败了"不是JPEG文件:以0x4d 0x4d开头".
  4. 图片扩展名是.jpg,但是Windows表示它是JPEG类型?这令人困惑.

有人可以帮忙吗?我是新手,不知道如何解决这个问题.

好吧,我只是想通了ImageIO.getImageReaders(stream)返回一个空的Iterator.这意味着它找不到合适的读卡器?我怎么读这个图像?

Jas*_*son 5

来自Javadocs ImageIO.read()

返回a BufferedImage作为解码所提供文件的结果,ImageReader其中从当前注册的文件中 自动选择.该File被包裹在一个 ImageInputStream.如果没有已注册的 ImageReader声明能够读取生成的流,null则返回.

尝试创建一个ImageInputStream,然后将其传递给ImageIO.read()方法,而不是发送文件本身.


Mar*_*nio 5

好吧,因为我换了笔记本电脑,我看着我的旧笔记本电脑,在jre/ext/lib中找到了这个JAR jai-imageio.jar(我知道这个主意).我将它移动到我的项目/ lib并且它工作了!我想这个jai-imageio.jar包含额外的图像阅读器.