2012-07-18 67 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