我想我掌握了您的问题。我检查了您链接的图像(http://www.jthink.net/jaikoz/scratch/front.jpg)。其归因于Exif和JFIF标准。
当您执行类似操作时,
ImageIO.read('some file')它将调用默认的sunjpeg实现
com.sun.imageio.plugins.jpeg.JPEGImageReader。过去在加载JFIF文件BUG
6488904时遇到问题(请检查注释到最后)。
根据 规范
,Exif和JFIF都要求它们各自的应用程序标记段必须位于SOI(APP1和APP0)之后的第一个位置,因此,实际上每个规范都不可能使JPEG文件符合这两个标准。
虽然据报很久以前
解决方法是使用JAI库(https://jai.dev.java.net/binary-
builds.html#Release_builds)。我正在使用 Java(无本机加速) 版本。
SeekableStream seekableStream = new FileSeekableStream(new File("front.jpg"));ParameterBlock pb = new ParameterBlock();pb.add(seekableStream);BufferedImage image = JAI.create("jpeg", pb).getAsBufferedImage();希望这会有所帮助。



