• 締切済み

読み込み完了後の画像サイズを取得したい

画像ファイルの高さを取得する関数を作成しています。 Imageオブジェクトのheightプロパティの値を取得すればよいだけなの ですが、画像が大きかったりすると読み込み完了前に値を取得してしま うようで、正確な高さが取得できません。 completeプロパティがfalseなら、trueが返ってくるまでheightプロパ ティの値を取得しない・・・といった処理を盛り込んだ関数が作成でき ればと考えていますが、上手く作成できずにいます。 アドバイスをよろしくお願いします。 とりあえず、関数本体はこんな感じにしてます。 function getImgHeight(imgSrc) { objImg = new Image(); objImg.src = imgSrc; //読込み完了ならば高さを取得したい //完了するまで待機できたらよいのだけど・・・ return objImg.height; }

みんなの回答

  • m035
  • ベストアンサー率44% (38/86)
回答No.3

onloadで高さを取得する関数を実行するという方法ではだめなんでしょうか? これが一番楽な方法だと思ってるんですが・・・

borichan
質問者

補足

ご回答ありがとうございます。 現在、高さを取得する関数自体が上手く作成できずに困っている状態です。 画像読込み完了後のサイズを取得できる関数の作成方法をご存知でしたら、ぜひご教示下さい。 よろしくお願いします。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>このようなメッセージが出ない方法で待機できればと考えています。 多分できないと思います。 関数のような形ではなくて、画面上のどこかに表示するという形で値を利用するということであれば、 画面の何処かに値をセットする関数を objImg.onload=setHeight; 見たいな形でイベント登録するといいかもしれません。

borichan
質問者

補足

やはり、関数化するのは難しいでしょうか・・・。 今は、タイマーを利用して、読込み完了まで次の処理に進まないようにしていますが、同様の処理が数箇所あるので、関数を作成して共有使用出来ればと考えたわけです。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

while(!objImg.complete); で、読込完了まで待機できると思いますが・

borichan
質問者

補足

ご回答ありがとうございます。 実は私もこの質問をする前に、同様にwhile文で待機しようとしてみたのですが、この方法では次のようなメッセージが出てしまいます。 「このページのスクリプトが、Internet Explorer の実行速度と遅くしています。スクリプトを実行し続けると、コンピュータが反応しなくなる可能性があります。スクリプトを中断しますか?」 このようなメッセージが出ない方法で待機できればと考えています。

関連するQ&A