2011-08-10 9 views
2

Imageオブジェクトを使用して、画像のサイズを変更するsetPixelSize()メソッドを呼び出して、サムネイルとしてpng画像を読み込みます。私はまた、ある時点で画像の元のサイズを整数として取り出す必要があります。画像の元のサイズ(幅、高さ)を取得するにはどうすればよいですか?Gwt Imageオリジナルサイズ

ok私はダミーコンテナ(SimplePanel)を使用し、スケーリングせずにイメージをロードして実際の寸法を保存し、親からコンテナを取り出して新しいImageオブジェクトを破棄します。私はこれが良い解決策であるかどうかわかりませんが、うまくいきます。私は別の方法があるかどうかを知りたいと思いますが...

回避策の問題:私は論理フォルダ(イメージを含む)を選択できるドロップリストを持っています。私は新しいフォルダを選択し、画像の新しいセットがディスプレイにロードされると、幅が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

Imageクラスを拡張し、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(); 
    } 
} 

これが動作しない場合は、(オンロードを実行してみてください)の代わりに、ONATTACH()、オンロードから()、それは間違いなく動作するはずですように画像がDOMに追加された後に呼び出されます。

0

新しい隠された画像(ビューポートの外側に絶対配置されたもの)を作成してサイズを読み取る最も簡単な方法です。画像のexifデータを読み取ることができるJavaScript libがありますが、この場合は過剰です。

+0

ビューポートの外側に配置された絶対値はどういう意味ですか? – Ponty

+0

cssを使用して要素を非表示:style = "position:absolute; top:-1000000px" –