Ошибка Java при создании BufferedImage из ByteArrayInputStream - PullRequest
4 голосов
/ 27 декабря 2010

Я пытаюсь создать BufferedImage из ByteArrayInputStream с:

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

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

  BufferedImage img = ImageIO.read(inputStream);

Но img всегда пусто.Входной поток действителен (так как я использую его раньше, чтобы получить формат изображения).Что может заставить ImageIO возвращать ноль?Нужно ли использовать флеш или закрыть в любом месте?

1 Ответ

5 голосов
/ 27 декабря 2010

Ваш вызов getFormatName использует inputStream , поэтому указатель потока находится в конце байтового массива.Любая попытка чтения из этого потока скажет, что он находится в конце «файла».Вам необходимо сбросить поток (или создать новый), прежде чем передать его в метод ImageIO.read ():

String format = getFormatName(new ByteArrayInputStream(imageData));
BufferedImage img = ImageIO.read(new ByteArrayInputStream(imageData));
...