将字节数组转换为Java中的映像 – 不知道类型

听起来很简单吧? 使用

ImageIO.read(new ByteArrayInputStream(bytes)); 

这是皱纹。 由于某种原因,它将jpeg检测为bmp,这是我调用时返回的第一个ImageReader

 ImageInputStream iis = ImageIO.createImageInputStream(new ByteArrayInputStream(bytes)); Iterator readers=ImageIO.getImageReaders(iis); 

这会导致图像损坏。 有没有办法告诉java没有直接查看标头的字节,并且失败,是否有人知道不同图像的字节标头的良好参考?

只是让你们知道我还在努力。 如果/我有答案,我会通知你。 到目前为止,我感谢你们所有人的回复。

这个页面可能是魔术数字的一个很好的起点。 这与维基百科类似。

有一段时间没有使用过ImageIO,并且没有对此进行测试,但我似乎记得这样的工作。 (因为你说你知道你的文件是jpg而不是位图,我正在使用这些信息来帮助找到合适的加载器)。

 String inFormat = "jpg"; Iterator inReaders = ImageIO.getImageReadersByFormatName(inFormat); ... nextInReader.setInput( iis ); 

有关参考,您可以查看维基百科,您可以在那里找到不同格式的标题。
http://en.wikipedia.org/wiki/Graphics_Interchange_Format
http://en.wikipedia.org/wiki/BMP_file_format
http://en.wikipedia.org/wiki/JPEG

BMP阅读器是getImageReaders()返回的唯一一个吗? 也许你会得到不止一个,并可以根据它做出选择。