2012-07-18 65 views
0

我保存的图像中的字符串,然后当我打开它,它总是300x150GWT画布 - 保存图像并打开它

为什么图像截断?

300x150从哪里来?

代码就是你所看到的。只有2个按钮。在“PNG”

第一个保存图像,而另一个从“PNG”

    Button save = new Button("copy"); 
        save.addClickHandler(new ClickHandler() { 
         @Override 
         public void onClick(ClickEvent event) { 
          ImageElement imageElement = ImageElement.as(image.getElement()); 

          Canvas canvasTmp = Canvas.createIfSupported(); 
          Context2d context = canvasTmp.getContext2d(); 
          context.drawImage(imageElement, 0.0, 0.0, imageElement.getWidth(), imageElement.getHeight()); 
          png = canvasTmp.toDataUrl("image/png"); 
         } 
        }); 

        Button open = new Button("open"); 
        open.addClickHandler(new ClickHandler() { 

         @Override 
         public void onClick(ClickEvent event) { 

          final Image image = new Image(png); 
          vp.add(image); 
          image.addLoadHandler(new LoadHandler() { 

           @Override 
           public void onLoad(LoadEvent event) 
           { 
            Window.alert("ok"); 
           } 
          }); 

          image.addErrorHandler(new ErrorHandler() { 

           @Override 
           public void onError(ErrorEvent event) { 
            Window.alert("error"); 
           } 
          }); 

         } 
        }); 

回答

1

画布具有300个像素的默认宽度和150个像素默认高度读取图像。创建画布之后,在绘制图像之前,请考虑这样做:

int width = imageElement.getWidth() 
int height = imageElement.getHeight() 
canvasTmp.setWidth(width + "px"); 
canvasTmp.setHeight(height + "px"); 
canvasTmp.setCoordinateSpaceWidth(width); 
canvasTmp.setCoordinateSpaceHeight(height); 
+0

非常感谢! – Spiff 2012-07-18 15:10:48