Я вижу, что у ряда людей была аналогичная проблема, однако я еще не пытался найти именно то, что я ищу.
Итак, у меня есть метод, который считывает входное изображение и преобразует его в массив байтов:
File imgPath = new File(ImageName);
BufferedImage bufferedImage = ImageIO.read(imgPath);
WritableRaster raster = bufferedImage .getRaster();
DataBufferByte data = (DataBufferByte) raster.getDataBuffer();
Теперь я хочу преобразовать его в BufferedImage (у меня есть приложение, для которого мне нужна эта функция). Обратите внимание, что "test" - это массив байтов.
BufferedImage img = ImageIO.read(new ByteArrayInputStream(test));
File outputfile = new File("src/image.jpg");
ImageIO.write(img,"jpg",outputfile);
Однако это возвращает следующее исключение:
Exception in thread "main" java.lang.IllegalArgumentException: im == null!
Это потому, что BuffedImage img имеет значение null. Я думаю, что это связано с тем, что в моем первоначальном преобразовании из массива BufferedImage в байт информация изменяется/теряется, так что данные больше не могут быть распознаны как jpg.
Есть ли у кого-нибудь предложения по тому, как это решить? Было бы очень благодарно.