jsで画像本来のサイズを取得する方法
画像本来のサイズを取得する必要があったので試してみました。
自分の覚え書きの意味も込めて。
jQueryで「$(img).width();」としても表示サイズしか取得出来ず、「display:none;」していると値が0になったりする。ちゃんと取得しようとすると、各ブラウザ毎に仕様が違うらしく非常に手間がかかるので、もっと簡単に出来ないか無いを知恵絞って考えてみました。
例)画像本来のサイズを取得し幅が500px以上あるなら500pxにリサイズ
■html <img src="sample.jpg" class="resize"> ■js $(window).bind('load', function(){ var resize = 500; $('.resize').each(function(){ var img = new Image(); var imgSrc = $(this).attr('src'); img.src = imgSrc; if(img.width < resize){ return; } $(this).width(resize); } });
「new Image();」で新しいイメージを作りそこに要素をコピーすると、画像本来の情報を取り扱えるらしい。これなら「display:none;」してても、本来とは違うサイズで表示されてても関係ないし、IE,chrome,safari,Firefoxなどのブラウザにも差は無かった。