Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GWT-浏览器中未显示图像(从服务器检索src)_Java_Gwt_Base64_Asynccallback - Fatal编程技术网

Java GWT-浏览器中未显示图像(从服务器检索src)

Java GWT-浏览器中未显示图像(从服务器检索src),java,gwt,base64,asynccallback,Java,Gwt,Base64,Asynccallback,我在服务器端生成base64映像源,然后通过异步调用将其检索到GWT客户端。不幸的是,回调结束后不会显示图像(一切正常),但会在第二次回调后显示。我试图在创建图像对象后立即捕获onLoad事件,但效果不佳 谢谢 编辑1 经过一些调查,这是一个尺寸问题,我的意思是,base64在那里,图像标签创建正确,但宽度和高度都设置为0 编辑2 以下是我在网站中放置图像的方式: import net.customware.gwt.dispatch.server.Dispatch import com.goog

我在服务器端生成base64映像源,然后通过异步调用将其检索到GWT客户端。不幸的是,回调结束后不会显示图像(一切正常),但会在第二次回调后显示。我试图在创建图像对象后立即捕获onLoad事件,但效果不佳

谢谢

编辑1

经过一些调查,这是一个尺寸问题,我的意思是,base64在那里,图像标签创建正确,但宽度和高度都设置为0

编辑2

以下是我在网站中放置图像的方式:

import net.customware.gwt.dispatch.server.Dispatch
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Image;

dispatch.execute(action, new AsyncCallback<GenerateImageResult> () {
    @Override
    public void onFailure(Throwable caught) {};
    @Override
    public void onSuccess(GetCarpetasResult result) {
        String base64 = result.getBase64();
        Image image = new Image(base64);
        RootPanel.get().add(image);
    }
});
import net.customware.gwt.dispatch.server.dispatch
导入com.google.gwt.user.client.rpc.AsyncCallback;
导入com.google.gwt.user.client.ui.Image;
dispatch.execute(操作,新异步回调(){
@凌驾
公共失效失效(可丢弃捕获){};
@凌驾
成功时的公共无效(GetRumberAsResult){
字符串base64=result.getBase64();
图像=新图像(base64);
RootPanel.get().add(图像);
}
});

我已经能够使用以下方法成功显示(在google chome中)base64图像数据:

    String base64= "data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAABMLAAATCwAAAAAAAAAAAAAAAAAAbGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf8AAAAAAAAAAGxsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/AAAAAAAAAABsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsbG3/bGxt/wAAAAAAAAAAbGxt/2xsbf8AAAAAbGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf8AAAAAbGxt/2xsbf8AAAAAAAAAAGxsbf9sbG3/AAAAAGxsbf9sbG3/bGxt/2xsbf9sbG3/bGxt/2xsbf9sbG3/AAAAAGxsbf9sbG3/AAAAAAAAAABsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAAAAAAAAVHibFE94oDxKeKRkRHiqkUx4ohlsbG3/bGxt/wAAAAAAAAAAAAAAAAAAAABLeKMPPHixUj54sIQ+eLC5Pniw3j54sP8/eK//QXet/0J2q/9Ed6k+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPXiwKkF4rf9BeK3/QXit/0J3q+xFdqnAQ3erhTt7s1Qqg8VSFY3cWQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD94rwlCeKxzRHaqUUR2qis7e7MIAAAAABiM2QwJk+hyA5fv4gKX7v8AmfIbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZPoGQOX7oIDlu7tBZXs/wSX6+wJkeqCHXjmTiBy6QIAAAAAAAAAAAAAAAAAAAAAAAAAAA+R4QICl+4kA5fuhgWW7PMGlev/BpXr6wSY64MNjOkQJ23lTC9j5PwuZOSBAAAAAAAAAAAAAAAAAAAAAAAAAAAElu0JBpXr1QaV6/8GlevpBpbrfASY6xcAAAAAK2fkNi5k5PgsZuT4LGbkRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAaV62wGlet+BZbrFQAAAAAAAAAALWTkIi1l5OUsZuT/LGbkWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmPkDyxl5MssZuT/LGbkewAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmPkAixm5K0sZuT/LGbkoQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALmTkAixm5JMsZuT/LGbkwCxm5AcAAAAAAAAAAAAAAAAAAAAAgAEAAIAB8L+f+QAAkAkAAJAJAACfAQAA4AcAAOAHAADggwAA/gEAAPABAADwIQAA+MP///+H////DwAA/g8AAA==";
    Image image = new Image(base64);
    RootPanel.get().add(image);
检查以下内容:

  • base64数据是否以
    data:${mime}开头;base64,
  • 您的
    mime
    真的描述了解码后的base64图像格式吗

是否尝试将onLoadHandler添加到图像对象?大概是这样的:

image.addLoadHandler(new LoadHandler () {
    @Override
    public void onLoad(LoadEvent event) {
        image.setUrl(base64);
    }
});

请张贴相应的代码。您是否使用ClientBundle生成base64映像?实际上,我正在服务器端生成映像(使用Java 2D库),然后在异步调用的回调中将base64生成的代码返回给客户端。Ok。让我看看你是如何把图片放到网站上的。