2012-04-26 10 views
14

ブラウザにドラッグされたか、htmlファイル入力要素で選択された画像(jpeg)からEXIFデータを抽出しようとしています。HTML/Javascriptファイルアップロード前のEXIFデータにアクセス

ブラウザ内の画像をFileReader and FileReader.readAsDataURLhere)とプレビューすることができました。

と私はEXIF libraryを見つけたので、javascriptで画像のEXIFデータを抽出することができます。しかし、私の場合は、通常のタグでURLを使ってコンテンツを読み込んだ場合にのみ動作します。

私もStackOverflowにthis questionが見つかりました。ここで受け入れられた答えは、それはちょうど不可能であると述べています。

500px.comは、ファイルがアップロードのために追加された直後で、アップロードが完了する前にEXIFデータを抽出するので、実現できると確信しています。

FileReaderから取得したbase64でエンコードされたイメージからEXIFデータを抽出する方法をいくつか考えてみましょうか?

+0

同じ【EXIF_ライブラリ]に基づいて、新しいソリューション[EXIF-JS(https://github.com/jseidelin/exif-js)、(http://blog.nihilogic.dk/2008 /05/reading-exif-data-with-javascript.html)から[http://www.nihilogic.dk/](http://www.nihilogic.dk/) – arty

答えて

14

私は最終的に問題のために、クライアント側の解決策を見つけた:

  1. FileReaderを使用してファイルおよび方法.readAsBinaryString
  2. を読む次に、既にEXIF Libraryに含まれているBinaryFileオブジェクトにそのバイナリ文字列をラップ
  3. は最後にEXIF.readFromBinaryFile(binaryFileObject);

を呼び出し、その行わ:)

+0

私のプロジェクトにbinaryajax.jsを含めると、アクセス拒否エラーが発生するため、これは私にとって解決策ではありません。 –

+1

nihilogic.dkへのリンクが死んでいます。 –

+1

BinaryFileオブジェクトとEXIFライブラリへのリンクも死んでいます。 – MDeuerlein

3

FxIF firefox extensionのコードをご覧ください。 JavaScriptのみを使用してexifデータを読み込みます。ファイルの内容を読むには、最新のブラウザのFileReader APIを使用できます。

+1

]私は本当にブラウザ拡張を避けたいと思っています。私はすでにFileReadyを使っていますが、FileReaderから取得したデータからEXIFデータを抽出する方法はわかりません。 – alex

+2

あなたはそのコードを見て、インストールしてはいけません。 ;) – ThiefMaster

+0

申し訳ありませんが、私はこれを逃しました..おそらくそれは助けます!ありがとう! – alex

4

jQuery-fileExifアップロード前に画像のexifデータを読み込みます。
GitHub link、ライブラリーの例jsfiddle

var someCallback = function(exifObject) { 

    $('#cameraModel').val(exifObject.Model); 
    $('#lat').val(exifObject.GPSLatitude); 
    $('#lng').val(exifObject.GPSLongitude); 
    // Uncomment the line below to examine the 
    // EXIF object in console to read other values 
    //console.log(exifObject); 

    } 

     try { 
     $('#file').change(function() { 
      $(this).fileExif(someCallback); 
     }); 
     } 
     catch (e) { 
     alert(e); 
     } 
+0

jqueryでプロジェクトにライブラリを含めるだけでアクセスが拒否されます。 –

関連する問題