Olá,
tenho uma tabela no Postgresql que armazena os bytes (tipo bytea) de imagens enviadas via formulário, usando a API Commons FileUpload. Utilizo o código abaixo para pegar os dados que vêm do submit para gerar uma imagem:
if (((byte[]) item.get()).length > 0) {
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(item.get()));
if (bufferedImage != null) {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(((byte[]) item.get()).length);
ImageIO.write(bufferedImage, "png", byteArrayOutputStream);
byteArrayOutputStream.flush();
byte[] bytes = byteArrayOutputStream.toByteArray();
byteArrayOutputStream.close();
FileOutputStream fileOutputStream = new FileOutputStream(new File("'caminho'/imagem.png"));
fileOutputStream.write(bytes);
fileOutputStream.close();
}
}
Quando vem do formulário a imagem é gerada normalmente. Porém quando uso o código para gerar a imagem vinda do banco, é gerado um arquivo ‘imagem.png’, porém ele vem corrompido, não podendo ser aberto. E o BufferedImage do código abaixo se torna nulo:
BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(bytes)); //bytes vindos do banco geram um BufferedImage nulo, neste caso.
É preciso alguma configuração extra para gerá-lo corretamente?