Java считывает массив байтов из PostgreSQL и записывает в файл изображения

#java #postgresql #image #fileoutputstream #bytea

#java #postgresql #изображение #fileoutputstream #bytea

Вопрос:

Мне нужно прочитать массив байтов изображения из таблицы PostgreSQL, которая выполняется как

 byte[] fileBytes = resultsSet.getBytes(1);
  

Когда я пытаюсь записать его в файл изображения, он не открывается (неподдерживаемый тип файла). Ниже приведен код

 FileOutputStream fos = new FileOutputStream("D:\test.png"); 
fos.write(fileBytes);
fos.close();
  

Комментарии:

1. "D:\test.png" с удвоенной обратной косой чертой; вы написали tab «est.png»

2. @JoopEggen Извините, это была опечатка.

Ответ №1:

Попробуйте этот метод, у меня сработало:

       InputStream in = new ByteArrayInputStream(rs.getBytes(1));
      BufferedImage bImageFromConvert = ImageIO.read(in);
                    if(null == bImageFromConvert){
                        throw new Exception("Invalid image");
                    }
                    OutputStream out = new FileOutputStream("e:/images/" "test".jpg");

        ImageIO.write(bImageFromConvert, "png", out);
  

Комментарии:

1. Я получаю invalid image исключение, даже если in значение не равно null. Когда я пытаюсь позвонить, ImageIO.read() он возвращается null .

2. Привет, ты сталкивался с решением?

3. Пока нет, пожалуйста, дайте мне знать, если у вас есть какие-либо другие предложения.