Little Strange Software

スマホアプリの開発を行う LittleStrangeSoftware のブログです。

【JavaScript】画像サイズ取得実験!【小ネタ】

 どうも!LSSです!!

 

JavaScriptの小ネタで、なにげにやったこと無かった?事をやってみます。

 

ブログなどのWebページに画像ファイルを配置する事がよくありますね。

あれはまず、画像ファイルをアップロードしておき、ブログなどのWebページからそれを呼び出す<img>タグによって呼び出して表示しています。

 

その際「画像の幅」「画像の高さ」という「サイズ」は2種類の意味にわかれる事になります。

  1. 画像ファイルそのもののサイズ
  2. imgタグによって描きだされた表示上のサイズ

今回はこの2種類ある「サイズ」の概念の、それぞれ幅と高さをJavaScriptから読み取って表示してみる実験です。

 

 

画像サイズ取得実験!

 

 

 

コード

<p><img id="img0" width="100%" src="画像ファイルのURL" /></p>
<div id="gamen"> </div>
<script>// <![CDATA[
img0.addEventListener('load',imgload,false);
function imgload(){
gamen.innerHTML=
'画像ファイルの幅:'+img0.naturalWidth
+'<br/>画像ファイルの高さ:'+img0.naturalHeight
+'<br/>画像の表示上の幅:'+img0.width
+'<br/>画像の表示上の高さ:'+img0.height;
}
// ]]></script>

 

 

説明

<img id="img0" width="100%" src="画像ファイルのURL" />

まず、↑のタグによって、指定した画像ファイルをページ上に表示しています。

srcはどの画像を表示するのかという指定です。

他に、

id="img0"

は、スクリプトから読みに行く時に必要となるidを指定しており、

width="100%"

は「画像を表示領域の幅いっぱいいっぱい」に表示させる指定です。
この記事の場合、記事本文表示領域の幅いっぱいに表示する事になります。

 

こうして、idをつけておくと、

img0.naturalWidth
img0.naturalHeight

で、そこに呼び出した画像ファイル自体の幅と高さ、

img0.width
img0.height

で、表示されている幅と高さのサイズを読み取る事ができます!

 

…ただし、naturalWidthとnaturalHeightは「その画像の読み込みが完了していないと読み取れない」ために、

img0.addEventListener('load',imgload,false);

として
「img0の要素が読み込み完了した時に、幅や高さを読み取る関数を実行する」
ように指定しています。

 

 

あとがき

今回の実験は、

 ↑これでやろうとしていた事をスクリプトの力を借りて実現する…ための、まず計算材料となるデータをスクリプトで読み取るための実験でした^^

 

この2種類のサイズ×幅&高さの4つの数字が取得できたので、計算に必要なデータは出そろった事になります。

あとはまた…この数値をCSSに当て込んで、期待通りの画像に仕上げられるか、を試さなきゃですね^^

 

 

 

ってなとこで、今回はこのへんで!

次回もまた、よろしくお願いします^^