使用 JAI 加载 Jpeg 图像时遇到异常:
原因:com.sun.media.jai.codecimpl.util.ImagingException:无法处理图像流,格式不正确。... 43 更多原因:com.sun.image.codec.jpeg.ImageFormatException:不是 JPEG 文件:以 sun.awt.image.codec.JPEGImageDecoderImpl.readJPEGStream(Native Method) 的 0xff 0xd9 开头
查看十六进制,它实际上在文件流的末尾有一个 0xff 0xd9 块。根据维基百科:
EOI 0xFF, 0xD9 无 图像结束
但是我知道我可以在任何图像编辑器中打开这个文件。如果我在 paint.net 编辑器中以 95% 的压缩率重新保存,该块就会消失(我假设因为这个块在标题中,并且在保存时 paint.net 会重写标题)
我知道我可以通过一个简单的字节检查来检测它https://stackoverflow.com/a/10069478/51841
有没有
- 一种在 java 中打开和重新保存图像的方法,这样它就不会成为 JAI 的其余部分的问题(这样我最后会得到一个 RenderedOp)
- 一种让 JAI 读取图像的方法,尽管有此标题(大多数图像阅读器似乎都这样做)
- 修改该二进制块的安全方法(即,用另一个块替换)
或者有没有人对我错过的这个问题有更多的了解?