繁体   English   中英

从ByteArrayInputStream创建BufferedImage的Java错误

[英]Java error creating BufferedImage from ByteArrayInputStream

我正在尝试使用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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM