iReports e JasperReports + Blob MySQL [Resolvido]

Pessoal,

Vejam se vocês podem me ajudar. Estou tendo dificuldades em pegar uma imagem (Blob) do Banco de Dados e jogar no relatório.

Tipo… eu coloco em…
Image Expression: $F{membro_foto}
Image Expression Class: java.io.InputStream

O erro encontrado é:

[quote]Error filling print…
java.lang.ClassCastException: [B at teste_imagem_1161007230062_409749.evaluate(teste_imagem_1161007230062_409749:163) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:539) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:507) at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:805) at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:447) at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:430) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:277) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:399) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:1289) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:631) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:228) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:758) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:234) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:752) at java.lang.Thread.run(Unknown Source) [/quote]

Agradeço…

Olá, amigo, fiz isto que vc está qurendo uma certa vez e foi assim, veja se ajuda:

pra recuperar a imagem a partir do campo Blob:

resultSet = statement.executeQuery(sql.toString());
//...
 Blob blob = (Blob) resultSet.getBlob("imagem");
 if (blob!=null){
  ImageIcon imagem = new ImageIcon(blob.getBytes(1, (int) blob.length()));
  }

Feito isto, vc precisar passar esta imagem para o iReport como um BufferedImage via parametro:

HashMap parametros = new HashMap();

BufferedImage bufferedImage = new BufferedImage(imagem.getIconHeight(), imagem.getIconWidth(), BufferedImage.TYPE_INT_RGB);
Graphics2D graphics = bufferedImage.createGraphics();
graphics.drawImage(imagem.getImage(), null, null);
graphics.dispose();

parametros.put("imagem", bufferedImage);

espero ter ajudado!
Um abraço!

A questão é que no relatório serão listados todos os dados dos membros (por página), e cada membro tem uma foto.

Acredito que esse esquema por parâmetro não funcione. Ou funciona?

[RESOLVIDO]

O problema era o seguinte:
Na lista dos “fields” estava membro_foto do tipo java.lang.Object, daí alterei para java.io.InputStream.

E na meu image field coloquei:
Image Expression: $F{membro_foto}
Image Expression Class: java.io.InputStream

Pronto… funcionou!

Pessoal, sei que o post é antigo, mas exemplifica bem o que estou tentando fazer aqui.

Segui exatamente os passo do the_negao, porém não aparece a imagem e dá o seguinte erro:

Erro ao expor página do relatório. Verifique o console para detalhes.

Mas o console não me mostra erro algum! Estou usando o plugin jasper na versão 4.0.0 junto com o Netbeans 7.0.1.
O bd é MS SQL Server 2005 e o tipo do campo é o image.

Tem alguma outra solução em que eu possa tentar?
Agradeço a ajuda!