从ByteArrayInputStream创建BufferedImage的Java错误

Rui*_*Rui 4 java bufferedimage stream

我正在尝试使用ByteArrayInputStream创建BufferedImage:

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

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

  BufferedImage img = ImageIO.read(inputStream);
Run Code Online (Sandbox Code Playgroud)

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

mha*_*ler 5

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

String format = getFormatName(new ByteArrayInputStream(imageData));
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));
Run Code Online (Sandbox Code Playgroud)