听起来很简单吧?使用
ImageIO.read(new ByteArrayInputStream(bytes));
这是皱纹。由于某种原因,它将jpeg检测为bmp,这是我打电话时返回的第一个ImageReader
ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes));
Iterator<ImageReader> readers=ImageIO.getImageReaders(iis);
这会导致图像损坏。有没有办法告诉java没有直接查看标头的字节,并且没有任何人知道不同图像的字节标头的良好参考?
让你们知道我还在努力。如果/我有答案,我会通知你。到目前为止,我感谢你们所有人的回复。
答案 0 :(得分:3)
有一段时间没有使用过ImageIO,并且没有测试过这个,但我似乎记得这样的工作。 (因为你说你知道你的文件是jpg而不是位图,我使用这些信息来帮助找到合适的加载器。)
String inFormat = "jpg";
Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat);
...
nextInReader.setInput( iis );
答案 1 :(得分:1)
作为参考,您可以查看维基百科,您可以在那里找到不同格式的标题
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
http://en.wikipedia.org/wiki/BMP_file_format
http://en.wikipedia.org/wiki/JPEG
答案 2 :(得分:0)
BMP阅读器是getImageReaders()
返回的仅吗?也许你得到的不止一个,可以根据它做出选择。