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