imagenReporteEl algún desarrollo necesite construir un reporte  con IReport, para poder cargar de los clientes la foto y  la huella capturada en un sistema biométrico. Dichas imágenes se encontraban almacenadas desde java, en la base de datos como un array de bytes.

Investigando y consultando encontré que si se puede, y es colocar en las propiedades de la imagen, en el atributo “Image Expression” la siguiente línea: net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte []) $F{Foto})

Como veremos a continuación:

1. Registro de la base de datos y su respectiva información:
registroBD

2. Datos almacenados en el campo Foto:
DatosBinariosimagenBD3. Consulta del reporte donde vemos los campos “Imagen,Foto”:consultaSQL

4. Diseño del reporte donde vemos los campos de la base de datos y los objetos de tipo imagen donde vamos a cargar.reporteDiseno

5. En los atributos de la imagen es donde se coloca la expresión : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte []) $F{Foto})expresionImagen

Y con todo lo anterior tenemos las imágenes cargadas de la base de datos en un archivo pdf generado desde IReport:imagenCargadaBD

Espero haya podido ser claro, cualquier duda o inquietud hacerla vía email. Más adelante agregare una entrada sobre la invocación del reporte desde un aplicativo en java.

18 Replies to “Cargar Imagen almacenada en Base de Datos con IReport de jaspersoft”

  1. Hola, y si estoy trabajando las expreciones con el lenguaje JavaScript, es posible hacer ese tipo de codigo?

  2. Saludos!
    Disculpa la demora en contestar. No te sabría decir, pero ten en cuenta que el jasper debe estar en el servidor y no en el cliente. Tocaría indagar en google si lo han realizado. Buen día.

  3. Buenas Tarde s me saca error me dice cannot cast image to string me pueds indicar que hafgo mal la foto la muestra pero la huella me saca ese error

  4. en el boton dentro de la aplicacion q metodo debe realizar para generar el reporte de la foto

  5. Hola amigo me puedes ayudar con ese error estoy en postgres 11 tipo de datos bytea
    Desde ya muchas gracias

    Compilation running time: 443!
     Filling report…
     Time zone: Default
    Error filling print… Error evaluating expression :      Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[]) $F{imagen})
    net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :      Source text : net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[]) $F{imagen})      at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:263)      at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:611)      at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:579)      at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:1016)      at net.sf.jasperreports.engine.fill.JRFillImage.evaluateImage(JRFillImage.java:492)      at net.sf.jasperreports.engine.fill.JRFillImage.evaluate(JRFillImage.java:472)      at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:259)      at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:456)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillTitle(JRVerticalFiller.java:354)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:290)      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:152)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:963)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:873)      at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:87)      at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:287)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:760)      at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)      at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)      at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)  Caused by: net.sf.jasperreports.engine.JRException: Image read failed.      at net.sf.jasperreports.engine.util.JRJdk14ImageReader.readImage(JRJdk14ImageReader.java:73)      at net.sf.jasperreports.engine.util.JRImageLoader.loadAwtImageFromBytes(JRImageLoader.java:167)      at net.sf.jasperreports.engine.util.JRImageLoader.loadImage(JRImageLoader.java:185)      at report32name_1558543547949_625444.evaluate(report32name_1558543547949_625444:232)      at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:250)      … 18 more 
    Print not filled. Try to use an EmptyDataSource…

  6. Saludos Yeyu! Ya valido que el campo de la base de datos sea de tipo blob, osea que se pueda almacenar una imagen. Adicionalmente $F{imagen}, existe en el Query y el nombre es el mismo. (imagen en minuscula). Lo que me da a entender es que ese campo no esta en la consulta que se realiza hacia la base de datos. Espero que de algo te sirva esta explicación. Quedo pendiente.

  7. Hola buen dia, tengo un problema al momento de llamar el jasper desde java, al correr la vista previa del reporte funciona bien, pero al llamarlo desde java, me avienta este error
    error: Error evaluating expression for source text: net.sf.jasperreports.engine.util.JRImageLoader.loadImage ((byte[])$F{imagen})

    si pudieras ayudarme lo agradeceria mucho

  8. Excelente, funciona al 100 lo cargué en la versión 1.3.3 sabrás algún método para la versión 0.2.3.0 es la que tienen aquí y en esa no compila correctamente y no están dispuestos a subir de versión :(, de antemano gracias.

  9. Excelente que te funcionara. con respecto algun método para la cersion 0.2.3.0, no la tengo.. Que tengas buen día y disculpa contestar hasta ahora.

  10. Saludos!
    Disculpla que hasta ahora responda. La posibilidad de que no funcione desde java, puede ser que haga falta la libreria, en el aplicativo. Buen día.

  11. Buen dia, la libreria la tengo :c, en realidad el reporte funciona perfectamente cuando no le pongo la imagen, y desde java sin problema, el error solo aparece cuando pongo la imagen en el reporte

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *