Recuperar imagem "Blob" do "POSTGRESQL"(Resolvido)

3 respostas
O21

Estou criando um relatorio com jasper report e no relatorio tem um objeto do tipo imagem que ira receber um inputstream que irei passar para ele na hora de rodar o relatorio, mas algo está dando errado porque o resultSet está não está pegando todos os bytes campo "Blob" dai no relatorio gera uma imagem só pela metade…

Vejam o meu código java para entenderem melhor —&gt

String sql = "SELECT pg.data as \"img_foto\" " +
		  "FROM imagem_relatorio ir, " +
			   "pg_largeobject pg " +
		  "WHERE pg.loid = ir.img_foto ";

Connection conn = getConexao();
Statement stm = conn.createStatement();
ResultSet res = stm.executeQuery(sql);

Map map = new HashMap();
InputStream input = null;

if (res.next()) {
    //pegando o conteudo do campo foto (BLOB, binario)
    input = res.getBinaryStream("img_foto");
     map.put("path", input);
}

Alguem ja teve esse problema, então postem aqui a solução.

Grato a todos…

:?: :arrow: :idea:

3 Respostas

micheldavid

Você está fechando o resultset e a conexão antes de gerar o relatório ?
Porque pode ser que ele esteja trazendo a parte da imagem que já estava carregada na memória, em buffer.

O21

Não só fecho tudo depois que o reletório é gerado…

O21

Consegui resolver o problema utilizando
LargeObjectManager lobj = ((org.postgresql.PGConnection) conn).getLargeObjectAPI();

essa classe para carregar a imagem Blob corretamente…

:?: :arrow: :idea:

Criado 20 de março de 2007
Ultima resposta 20 de mar. de 2007
Respostas 3
Participantes 2