2010-06-18 47 views
5

我从一个xml文件通过jaxb获得一个base64字节[],我不知道如何将其转换回gwt图像(如果我理解正确,基本上是一个基础html img)。我如何转换成适当的字符串?gwt base64 image

我的第一反应是到

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

但显然不起作用。 任何帮助表示赞赏!

回答

6

如果你想使用data URIs(使用base64编码) - 尽管IE < = 7不支持它,而IE8只允许高达32 kB - 您必须对图像数据进行64位编码。

有几个Base64编码器围绕着您可以在服务器端使用:

String base64 = Base64Utils.toBase64(icon); 

然后将编码的数据传输到客户端。

如果您确实想要,也可以在客户端使用编码器,但这需要将java文件复制到客户端源(如果您确保选择的实现允许)。

0

您应该提供可用于获取图像的URL。我真的不认为你的代码会导致类似url的东西(类似于http://localhost/myimage.png,或者也许mywebapp/myimage.png ...)

+0

OP正在讨论数据URI。该格式是有效的:http://en.wikipedia.org/wiki/Data_URI_scheme#Format(注意,它不适用于所有浏览器) – 2010-06-19 15:41:24

+0

你是对的... :) – markovuksanovic 2010-06-19 15:51:25

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); 

图像是一个gwt图像在这种情况下。