2

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

わかりました回避策を見つけました: ダミー コンテナー (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);//
    }
4

3 に答える 3

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() の代わりに onLoad() を実装してみてください。これは、画像が DOM に追加された後に onLoad() が呼び出されるため、確実に機能するはずです。

于 2011-08-10T17:27:39.810 に答える
0

新しい非表示のイメージ (絶対ビューポートの外側に配置) を作成し、サイズを読み取る最も簡単な方法です。画像のexifデータを読み取ることができるJavaScriptライブラリがありますが、この場合はやり過ぎです。

于 2011-08-10T09:55:12.003 に答える