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

时间:2009-07-31 14:33:09

标签: java javax.imageio

听起来很简单吧?使用

ImageIO.read(new ByteArrayInputStream(bytes));

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

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

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

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

3 个答案:

答案 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()返回的吗?也许你得到的不止一个,可以根据它做出选择。

相关问题