-
FEATURED COMPONENTS
First time here? Check out the FAQ!
Hi,
I'm getting an image from a data base and I want to show this image with zk's image component.
I'm getting a String that represents the image so I thought to do something like this:
String fichero = imagenbin.getFichero(); //the String that represents the image AImage aimagen; try { aimagen = new AImage("",fichero.getBytes()); img.setContent(aimagen); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
java.io.IOException: Unknown image format: at org.zkoss.image.AImage.init(AImage.java:125) at org.zkoss.image.AImage.<init>(AImage.java:73) at org.sts.PruebaImagenbin.PruebaImagenbin.onCreate$img(PruebaImagenbin.java:72) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.zkoss.zk.ui.event.GenericEventListener.onEvent(GenericEventListener.java:87) at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:192) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:517) at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.sendEvent(EventProcessingThreadImpl.java:121) at org.zkoss.zk.ui.event.Events.sendEvent(Events.java:319) at org.zkoss.zk.ui.event.Events.sendEvent(Events.java:329) at org.zkoss.zk.ui.AbstractComponent$ForwardListener.onEvent(AbstractComponent.java:3042) at org.zkoss.zk.ui.impl.EventProcessor.process0(EventProcessor.java:192) at org.zkoss.zk.ui.impl.EventProcessor.process(EventProcessor.java:138) at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.process0(EventProcessingThreadImpl.java:517) at org.zkoss.zk.ui.impl.EventProcessingThreadImpl.run(EventProcessingThreadImpl.java:444)
or sometimes I get this:
sun.awt.image.ImageFormatException: Bogus marker length at sun.awt.image.JPEGImageDecoder.readImage(Native Method) at sun.awt.image.JPEGImageDecoder.produceImage(Unknown Source) at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source) at sun.awt.image.ImageFetcher.fetchloop(Unknown Source) at sun.awt.image.ImageFetcher.run(Unknown Source)
Can anyone tell me what I'm doing wrong?
Thank you in advance!
You can try this to upload anything:
public static MediaDTO getMedia( org.zkoss.util.media.Media media ) throws IOException { MediaDTO dto = new MediaDTO(); int mediaSize = 1; dto.setFormat( media.getFormat() ); dto.setName( media.getName() ); dto.setMimeType( media.getContentType() ); if ( media.inMemory() ) { if ( media.isBinary() ) dto.setObject( media.getByteData() ); else dto.setObject( media.getStringData().getBytes( "UTF-8" ) ); } else { if ( media.isBinary() ) { mediaSize = media.getStreamData().available(); dto.setObject( new byte[ mediaSize ] ); media.getStreamData().read( dto.getObject(), 0, mediaSize ); } else { InputStreamReader is = ( InputStreamReader )media.getReaderData(); StringBuffer strBuffer = new StringBuffer( 1024 * 64 ); char[] chArray = new char[ 512 ]; int nRead; do { nRead = is.read( chArray ); if ( nRead > 0 ) { strBuffer.append( chArray, 0, nRead ); } } while ( nRead > 0 ); mediaSize = strBuffer.length(); dto.setObject( strBuffer.toString().getBytes( "UTF-8" ) ); } } return dto; }
the complete code is in http://www.zkoss.org/forum/listComment/16240-How-save-an-image-into-MYSQL
Nues,
I really don't like use base64 to store binary data as string to database, it multiply the data size and has decode effort
it is just a workaround only if you have noway to store binary.
Asked: 2011-06-30 03:09:59 +0800
Seen: 1,151 times
Last updated: Jul 14 '11