hibernate - Generate java.awt.Image using byte[] from oid column in PostgreSQL -


have nice day. i'm working application using seam 2, rich faces , primefaces, hibernate jpa , postgresql. have done catalogs tables image field. use annotations declare image field in table:

@lob @basic(fetch=fetchtype.lazy) @column(name = "fotografia") public byte[] getfotografia() {     return fotografia; } public void setfotografia(byte[] fotografia) {     this.fotografia = fotografia; } 

and stores in oid column in table in postgresql database. after can show image without problem in views using primefaces tag showing images:

<p:graphicimage id="_ftfur"                                     value="#{genericimagestreamer.image}"                                     rendered="#{genericimagestreamer.image!=null}"                                     alt="sin fotografia" style="width:320px; height:420px;"                                     styleclass="ui-image-container" /> 

so works without problems in view. need create pdf report showing list of rows table , need show image stored each row, doesn't work. use seam itext.

for code, inside repeater tag use iterate through arraylist, i'm trying use p:image tag attribute imagedata shown in documentation:

<ui:fragment rendered="#{vis.image != null}">                         <p:image alignment="center" imagedata="#{vis.image}" />                             </ui:fragment> 

but error when it's trying generate report:

 10:06:28,006 error [stderr] 04-14-2014 10:06:28 com.sun.facelets.faceletviewhandler handlerenderexception grave: error rendering view[/inv/producto/repvestidospdf.xhtml] java.lang.nullpointerexception     @ java.io.bytearrayinputstream.<init>(bytearrayinputstream.java:89)     @ com.lowagie.text.image.getinstance(unknown source)     @ org.jboss.seam.pdf.ui.uiimage.createitextobject(uiimage.java:145)     @ org.jboss.seam.pdf.ui.itextcomponent.encodebegin(itextcomponent.java:213)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:283)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:295)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ javax.faces.component.uicomponent.encodeall(uicomponent.java:936)     @ com.sun.facelets.component.repeatrenderer.encodechildren(repeatrenderer.java:50)     @ com.sun.facelets.component.uirepeat.process(uirepeat.java:357)     @ com.sun.facelets.component.uirepeat.encodechildren(uirepeat.java:617)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:289)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:289)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:289)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:289)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ org.jboss.seam.pdf.ui.itextcomponent.encode(itextcomponent.java:289)     @ org.jboss.seam.pdf.ui.itextcomponent.encodechildren(itextcomponent.java:256)     @ javax.faces.component.uicomponent.encodeall(uicomponent.java:936)     @ javax.faces.component.uicomponent.encodeall(uicomponent.java:942)     @ com.sun.facelets.faceletviewhandler.renderview(faceletviewhandler.java:592)     @ org.ajax4jsf.application.viewhandlerwrapper.renderview(viewhandlerwrapper.java:100)     @ org.ajax4jsf.application.ajaxviewhandler.renderview(ajaxviewhandler.java:176)     @ com.sun.faces.lifecycle.renderresponsephase.execute(renderresponsephase.java:109)     @ com.sun.faces.lifecycle.phase.dophase(phase.java:100)     @ com.sun.faces.lifecycle.lifecycleimpl.render(lifecycleimpl.java:139)     @ javax.faces.webapp.facesservlet.service(facesservlet.java:266)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:290)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.primefaces.webapp.filter.fileuploadfilter.dofilter(fileuploadfilter.java:79)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:83)     @ org.jboss.seam.web.identityfilter.dofilter(identityfilter.java:40)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.jboss.seam.web.multipartfilter.dofilter(multipartfilter.java:90)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.jboss.seam.web.exceptionfilter.dofilter(exceptionfilter.java:64)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.jboss.seam.web.redirectfilter.dofilter(redirectfilter.java:45)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.ajax4jsf.webapp.basexmlfilter.doxmlfilter(basexmlfilter.java:178)     @ org.ajax4jsf.webapp.basefilter.handlerequest(basefilter.java:290)     @ org.ajax4jsf.webapp.basefilter.processuploadsandhandlerequest(basefilter.java:368)     @ org.ajax4jsf.webapp.basefilter.dofilter(basefilter.java:495)     @ org.jboss.seam.web.ajax4jsffilter.dofilter(ajax4jsffilter.java:56)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.jboss.seam.web.loggingfilter.dofilter(loggingfilter.java:60)     @ org.jboss.seam.servlet.seamfilter$filterchainimpl.dofilter(seamfilter.java:69)     @ org.jboss.seam.servlet.seamfilter.dofilter(seamfilter.java:158)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.jboss.web.tomcat.filters.replyheaderfilter.dofilter(replyheaderfilter.java:96)     @ org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:235)     @ org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:206)     @ org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:230)     @ org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:175)     @ org.jboss.web.tomcat.security.securityassociationvalve.invoke(securityassociationvalve.java:182)     @ org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:432)     @ org.jboss.web.tomcat.security.jacccontextvalve.invoke(jacccontextvalve.java:84)     @ org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:127)     @ org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:102)     @ org.jboss.web.tomcat.service.jca.cachedconnectionvalve.invoke(cachedconnectionvalve.java:157)     @ org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:109)     @ org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:262)     @ org.apache.coyote.http11.http11processor.process(http11processor.java:844)     @ org.apache.coyote.http11.http11protocol$http11connectionhandler.process(http11protocol.java:583)     @ org.apache.tomcat.util.net.jioendpoint$worker.run(jioendpoint.java:446)     @ java.lang.thread.run(thread.java:662) 

according seam documentation:

p:image inserts image document. images can loaded classpath or web application context using value attribute. resources  can    dynamically  generated   application  code. imagedata attribute can specify value binding expression value java.awt.image object. 

and that's i'm doing, creating java.awt.image object using byte[] matrix database. have tried lines of code, obtaining same error message:

//1 toolkit toolkit = toolkit.getdefaulttoolkit(); productoiter.setimage(toolkit.createimage(img.get(0).getfotografia()));  //2 image image = imageio.read(new bytearrayinputstream(img.get(0).getfotografia())); productoiter.setimage(image);  //3                                   genericimagestreamer.setmimetype(img.get(0).getmimetype()); genericimagestreamer.setinputstream(img.get(0).getfotografia()); image image = imageio.read(genericimagestreamer.getimage().getstream()); productoiter.setimage(image); 

productoiter iterator use set java.awt.image object, after getting list database, iterate through , try convert byte[] java.awt.image, when byte[] isn't null, gives me previous error. don't know if have convert byte[] thing before using parameter create image object or that.

regards.

well, answer myself because after searching lot found solution problem. generating bytearrayinputstream instead java.awt.image , using value attribute instead imagedata in tag.

here link full answer (check response of guy posted that, answers himself me). datatype can customized if store mimetype of image.

show database images seam itext pdf report


Comments

Popular posts from this blog

windows - Single EXE to Install Python Standalone Executable for Easy Distribution -

c# - Access objects in UserControl from MainWindow in WPF -

javascript - How to name a jQuery function to make a browser's back button work? -