GWT Base64 图片

5

我正在通过jaxb从xml文件获取一个base64 byte[],但我不确定如何将其转换回gwt图像(如果我正确理解的话,它基本上是一个底层的html img)。如何将其转换为适当的字符串?

我的第一个直觉是

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

但显然那样做是不起作用的。 感谢任何帮助!

3个回答

6
如果您想使用基于base64编码的数据URI,请注意IE <= 7不支持,而IE8仅允许最多32 kB。您需要对图像数据进行base64编码。有几个Base64编码器可供选择,例如com.google.gwt.user.server.Base64Utils,您可以在服务器端使用它们:
String base64 = Base64Utils.toBase64(icon);

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

如果您非常想这样做,您也可以在客户端上使用编码器,但这需要将Java文件复制到客户端源代码中(如果您确保所选的实现允许这样做)。


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

在这种情况下,Image 是 GWT 中的一种图片。

0

您应该提供可用于获取图像的URL。我真的不认为您的代码会产生类似URL的东西(例如http://localhost/myimage.png,或者可能是mywebapp/myimage.png...)


OP在谈论数据URI。格式是有效的:http://en.wikipedia.org/wiki/Data_URI_scheme#Format(请注意,并非所有浏览器都支持此格式)。 - Chris Lercher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接