我在http://code.google.com/p/gwt-examples/wiki/gwt_hmtl5使用了这段代码(一种教程)...在这段代码中,我使用了“Image Scale / Resize”代码,我发现了一些我无法解释的内容。我的意思是,而不是使用:
final Image img = new Image("/img/test.jpg");
我使用了客户端捆绑包,因此代码如下:
final Image img = new Image(NormalResources.NORMAL_RES_INSTANCE.axl1());
我没有任何错误,但图像没有出现。最后我找到了解决方案:
final Image img = new Image(NormalResources.NORMAL_RES_INSTANCE.axl1().getSafeUri());
您知道“.getSafeUri()”解决问题的原因吗?
答案 0 :(得分:1)
请参阅ImageResource in ClientBundle as real <img> element
使用Image
创建的ImageResource
将无条件地使用剪裁的图片,其中图片被设置为CSS背景图片(以及<img>
' s src
是1×1px透明GIF)。因为图像实际上是一个空白的GIF,所以将它绘制到画布上并没有什么值得注意的; canvas不考虑CSS样式。
使用getSafeUri()
,您将获得图片的data:
网址,该网址将用作src
的{{1}}。此处没有<img>
,因此图像在画布上正确绘制。
但请注意,默认情况下,blank.gif
在IE6和IE7中不会工作。如果您需要支持它们,则必须使用getSafeUri()
或ImageResource
为@ImageOptions(preventInlining = true)
添加注释。或者,您可以使用@ImageOptions(repeatStyle = RepeatStyle.Both)
代替DataResource
s。