Это сообщение является продолжением: ImageIO.read не может прочитать ByteArrayInputStream (обработка изображений)
Как и в случае с OP, я получаю нулевой указатель всякий раз, когда пытаюсьчитать из моего ByteArrayInputStream (как и должно быть, как объяснено в верхнем ответе).Заметив это, я реализовал код из ответа @haraldK из поста выше, чтобы исправить эту проблему, но столкнулся с другой проблемой.У меня есть следующий код:
byte[] imageInByteArr = ...
// convert byte array back to BufferedImage
int width = 1085;
int height = 696;
BufferedImage convertedGrayScale = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_GRAY);
convertedGrayScale.getRaster().setDataElements(0, 0, width, height, imageInByteArr );
try {
ImageIO.write(convertedGrayScale, "jpg", new File("C:\\test.jpg"));
}
catch (IOException e) {
System.err.println("IOException: " + e);
}
При выполнении я сталкиваюсь с ошибкой java.lang.ArrayIndexOutOfBoundsException: null
в строке прямо перед блоком try / catch.Моей первой мыслью было, что этот нулевой указатель возник из-за отсутствия файла на моем диске C с именем test.jpg
.Я исправил это беспокойство, но у меня все та же проблема с нулевым указателем на convertedGrayScale.getRaster().setDataElements(0, 0, width, height, imageInByteArr );
.Почему это происходит?
В другой заметке, кроме написания файла, использующего ImageIO, есть ли другой способ для меня преобразовать байт [] в визуальное представление изображения?Я попытался просто напечатать массив в файл и сохранить его как «.jpg», но файл не открывается.Любые предложения помогут.Подводя итог, я хочу преобразовать байт [] в изображение и сохранить его ИЛИ отобразить в браузере.Что проще / выполнимо.