[RESOLVIDO]Imagem do PostgreSQL no iReport

Bom dia,

Tenho um relatório criado no iReport que preciso mostrar uma imagem que esta em um banco de dados postgreSQL com o tipo bytea[]. Pesquisei em vários tópicos e sites, fiz diversas tentativas porém nenhuma efetiva. Pelo oque entendi, o problema é que o postgre não salva imagens com um tipo chamado BLOB, oque dificulta a inserção de imagem no relatório.

Segue oque eu fiz até agora no iReport baseado nas pesquisas realizadas:

<field name="imagem" class="java.io.InputStream"/>
<imageExpression><![CDATA[new ByteArrayInputStream((byte[])$F{imagem})]]></imageExpression>

E alterei o parâmetro para do elemento imagem para java.awt.Imagem
image

Se não me engano, deve-se evitar salvar imagens no banco. Além disso, se ao contrário o MySQL, o PostgreSQL não suporta BLOB, não seria melhor passar o path da imagem para o IReport?

no jasper só funciona quando o tipo é java.io.InputStream.
faz o teste pra ver se funciona.

troca isso:

<imageExpression><![CDATA[new ByteArrayInputStream((byte[])$F{imagem})]]></imageExpression>

por isso:

<imageExpression><![CDATA[$F{imagem}]]></imageExpression>

Qual seria a melhor forma? Eu fiz salvando a imagem no BD, tem alguma outra forma melhor de fazer isso?

Segui o que você disse, mas aparece isso:

image

E no console não aparece nada, nenhum erro, somente aparece esta mensagem.

Tentei também, porém aparece a mensagem:

image

E não aparece nada no console

Boa tarde, geralmente o que eu faço é colocar a imagem como InputStream. Pra mim funciona numa boa.

Mas você utiliza o postgreSQL? Porque pelas pesquisas que fiz, o postgreSQL gera uma dificuldade a mais do que os outros bancos, porque ele não salva a imagem em um formato BLOB (não sei muito bem do que se trata).

Cara, não é que gera dificuldade a mais. Só são banco de dados que tratam algumas coisas de forma diferente. Mas é um ótimo banco. Eu uso o postgres e nunca tive problemas pra nada…

Agora uma dúvida, pq vc está utilizando o iReport? Pq não começa a usar o Jasper?

Concordo com você, todos meus projetos da faculdade foram sempre feitos no postgreSQL, é um ótimo banco, eu que não estou sabendo lidar com essa situação.

Cara, porque aprendi a usar o iReport, você me recomenda migrar para o Jaspersoft Studio? Ele é melhor?

Eu uso Oracle e também passei mal para fazer imagens e outros componentes funcionarem corretamente. Mas independente do gerador de relatórios que você usar você vai ter problemas com outras coisas. Fique bom no que você já sabe e depois procure opções, esse é meu conselho.

Entendo, porém é possível você me mostrar o que você faz pra trazer uma imagem do postgreSQL para o iReport? Tentei de várias formas porém algumas dão erro no console, outras dão erro no momento de gerar o relatório…

me passa a configuração do campo dentro do postgre para eu conseguir simular aqui que eu te passo certinho.

A coluna esta configurada desta forma

Eu usei a versão 12 do postgre, criei uma tabela com apenas dois campos (id, image) e inseri um registro com a imagem do meu avatar.

image

Fiz um select diretamente no report, inseri uma imagem e configurei da seguinte forma:

image

Segue resultado:

pra finalizar o xml do campo dentro do report.

Fiz a mesma coisa, porém deu erro:

image

Imagem
image
image

Meu field da imagem esta configurado desta forma
image

Será que é a forma como eu salvo a imagem no banco de dados?

Select utilizado

image

Esqueci de dizer, mas a mensagem pede pra ver o console para mais detalhes, porém o console fica vazio.

bom dia, minha query está igual, a grande questão é se os dados dentro do campo de imagem na sua tabela não tem nada corrompido, algo que não seja uma imagem ou conteúdo nulo.