从ByteArrayInputStream创建BufferedImage的Java错误

我正在尝试使用ByteArrayInputStream创建BufferedImage

  byte[] imageData = getData(imageFile); // returns file as byte[]

  InputStream inputStream = new ByteArrayInputStream(imageData);
  String format = getFormatName(inputStream);

  BufferedImage img = ImageIO.read(inputStream);

但是img总是空的.输入流有效(因为我之前使用它来获取图像格式).
是什么让ImageIO返回null?我是否需要在任何地方使用冲洗或关闭?

解决方法:

您对getFormatName的调用使用inputStream,因此流指针位于字节数组的末尾.任何尝试从该流中读取都会告诉它它位于’文件’的末尾.在将流传递给ImageIO.read()方法之前,您需要重置流(或创建一个流):

String format = getFormatName(new ByteArrayInputStream(imageData));
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));
上一篇:如何将具有ComponentColorModel的BufferedImage转换为SWT ImageData?


下一篇:java – TYPE_4BYTE_ABGR到TYPE_3BYTE_BGR转换