2010-06-18 22 views
5

Obtengo un byte base64 [] de un archivo xml a través de jaxb y no estoy seguro de cómo convertir esto a una imagen gwt (que es básicamente un html img subyacente si lo entendí correctamente). ¿Cómo convierto la cadena correcta?gwt base64 imagen

Mi primer instinto fue

public void onSuccess(final byte[] icon) { 
img.setUrl("data:image/png;base64,"+icon.toString()); 

pero obviamente eso no funciona. ¡Se agradece cualquier ayuda!

Respuesta

6

Si desea utilizar data URIs (con codificación base64) - aunque IE < = 7 no lo admite, e IE8 solo permite hasta 32 kB - tendrá que codificar en base64 los datos de la imagen.

Existen varios codificadores Base64 alrededor, p. com.google.gwt.user.server.Base64Utils, que se puede utilizar en el lado del servidor:

String base64 = Base64Utils.toBase64(icon); 

a continuación, transferir los datos codificados al cliente.

Si lo desea, también podría usar el codificador en el lado del cliente, pero eso requeriría copiar el archivo java al origen del cliente (si se asegura de que la implementación que elija lo permita).

0

Debe proporcionar la URL que se puede utilizar para obtener la imagen. Realmente no creo que su código resultará en algo que se parece a una url (algo así como, http://localhost/myimage.png, o tal vez mywebapp/myimage.png ...)

+0

El OP está hablando de URI de datos. El formato es válido: http://en.wikipedia.org/wiki/Data_URI_scheme#Format (tenga en cuenta que no funciona con todos los navegadores) –

+0

Tienes razón ... :) – markovuksanovic

4
String b = "this should be a base64 encode string that was generated from an icon or byte[]"; 
Image image = new Image(); 
image.setUrl("data:image/png;base64,"+b); 

view.getPreviewTable().setWidget(14, 0, image); 

la imagen es una imagen gwt en este caso.

Cuestiones relacionadas