2011-08-10 156 views
2

我使用Image對象通過調用其setPixelSize()方法來調整圖像的大小加載PNG圖像作爲縮略圖。我還需要在某個時候以整數的形式檢索圖像的原始大小。如何獲得圖像的原始尺寸(寬度,高度)?GWT圖像原始大小

確定我發現一種解決方法:我使用虛設容器(SimplePanel)並裝載圖像不進行縮放保存它的實際尺寸,然後從父移除容器並丟棄新的圖像對象。我不知道這是一個很好的解決方法,但它的工作原理。雖然我想知道是否有另一種方式......解決方法的

問題:我有一個droplist從中我可以選擇邏輯文件夾(含圖片)。當我選擇一個新的文件夾,並在顯示器上加載新的圖像集時,我得到0代表寬度,0代表高度。

private void getTrueSize(String fullUrl) { 
     Image trueImage = new Image(); 
     this.tstCon.add(trueImage); 
     trueImage.setUrl(fullUrl); 
     this.trueHeight = trueImage.getHeight(); 
     this.trueWidth = trueImage.getWidth(); 
     //this.tstCon.remove(trueImage); 
     //trueImage = null; 
     GWT.log("Image [" + this.imgTitle + "] -> height=" + this.trueHeight + " -> width=" + this.trueWidth);// 
    } 

回答

1

擴展圖像類和實施onAttach()方法。當一個小部件被附加到瀏覽器的文檔時,這個方法被調用。

public class Thumb extends Image { 

    public Thumb(){ 
     super(); 
    } 

    protected void onAttach(){ 
     Window.alert(getOffsetHeight()+" "+getOffsetWidth()); //this should give you the original value 
     setPixelSize(10,10); // this should be the visible value 
     super.onAttach(); 
    } 
} 

如果這行不通,嘗試實現的onLoad()而不是onAttach(),因爲對的onLoad圖像被添加到DOM後()將被調用,以便它肯定應該工作。

0

它來創建一個新的隱藏圖像(置於絕對視外),讀大小的最簡單方法。有一個JavaScript lib可以讀取圖像的exif數據,但在這種情況下這將是矯枉過正。

+0

你的意思是放置在視口外的絕對? – Ponty

+0

使用css隱藏元素:style =「position:absolute; top:-1000000px」 –

相關問題