2013-07-21 4 views
5

を取得こんにちは、私は、ファイルリーダーのAPIを使用して、アップロード画像を取得するために、次のコードを使用しています:JS - ファイルリーダーのAPIは、イメージファイルのサイズと寸法

<script type="text/javascript"> 
var loadImageFile = (function() { 
    if (window.FileReader) { 
     var oPreviewImg = null, oFReader = new window.FileReader(), 
      rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i; 

     oFReader.onload = function (oFREvent) { 

      /*get image*/ 
      var _img = oFREvent.target.result; 
      console.log(oFREvent.target); 
      /*add img to hidden input text*/ 
      localStorage.photo = _img; 
      oPreviewImg.src = oFREvent.target.result; 
     }; 

     return function() { 
      var aFiles = document.getElementById("imageInput").files; 
      if (aFiles.length === 0) { return; } 
      if (!rFilter.test(aFiles[0].type)) { 
       notify("You must select a valid image file!",3400,false); return; 
      } 
      oFReader.readAsDataURL(aFiles[0]); 
     } 

    } 

})(); 
</script> 

<form name="uploadForm"> 
<p><input id="imageInput" type="file" name="myPhoto" onchange="loadImageFile();" /><br /> 
<input type="submit" value="Send" /></p> 
<input type="hidden" id="photo_1_hidden" name="photo_1"/> 
</form> 

それは素晴らしい作品と、それはのbase64でデータを返します。画像。

今、画像ファイルのサイズと画像の幅と高さを取得したいと思います。

可能ですか?

私は、ファイルをコンソールにログインしようとしましたが、私が探しているものが見つかりませんでした。

何か助けてくれてありがとうございました!

答えて

2

このようなものはありますか?

var oPreviewImg = new Image(); 
oPreviewImg.onload = function(){ 
    console.log(this.size); 
    alert("'" + this.name + "' is " + this.width + " by " + this.height + " pixels in size."); 
    return true; 
}; 

oPreviewImg.onerror = function(){ 
    alert("'" + this.name + "' failed to load."); 
    return true; 
} 

oPreviewImg.src = "//placeholdit.imgix.net/~text?txtsize=33&txt=350%C3%97150&w=350&h=150"; 

var xhr = new XMLHttpRequest(); 
xhr.open('HEAD', oPreviewImg.src, true); 
xhr.onreadystatechange = function() { 
    console.log('this', this); 
    if (xhr.readyState == 4) { 
    if (xhr.status == 200) { 
     alert('Size in bytes: ' + xhr.getResponseHeader('Content-Length')); 
    } else { 
     alert('ERROR'); 
    } 
    } 
}; 
xhr.send(null); 

Live version

更新フィドルに置き換えライブバージョンは、しかし、クロスサイトスクリプティングの問題のために、サイズがもはや効果的に取り出さされていません。

+1

ええ、ファイルサイズはどうですか? – bombastic

+0

サイズを追加しました。申し訳ありませんが、ちょうどサイズが欲しいと迷っていました。あなたが巧みであれば、おそらく1つの要求しかできません。 –

+0

あなたはライブバージョンのURLにDNSの問題があります。 – LukyVj

0

私は、JSが最初に画像をビューポートにレンダリングせずにそのデータを取得できるとは考えていません。言い換えれば、JavaScriptやJQueryライブラリで尋ねることを行う方法には、私は慣れていません。そのようなデータを取得するための最良の方法は、プレビュー機能でページにイメージをレンダリングするか、PHPなどのより強力な言語を使用して、Ajaxリクエストを使用して探しているデータを取得することです。

関連する問題