从HTML5 FileApi加载图像中检索EXIF图像元数据?

con*_*ile 5 html javascript jquery html5 filereader

我正在使用HTML5 文件API和FileReader.

HTML:

<div id="holder"></div> 
Run Code Online (Sandbox Code Playgroud)

JS:

<script>
var holder = document.getElementById('holder'),
    state = document.getElementById('status');

if (typeof window.FileReader === 'undefined') {
  state.className = 'fail';
} else {
  state.className = 'success';
  state.innerHTML = 'File API & FileReader available';
}

holder.ondragover = function () { this.className = 'hover'; return false; };
holder.ondragend = function () { this.className = ''; return false; };
holder.ondrop = function (e) {
  this.className = '';
  e.preventDefault();

  var file = e.dataTransfer.files[0],
      reader = new FileReader();
  reader.onload = function (event) {
    console.log(event.target);
    holder.style.background = 'url(' + event.target.result + ') no-repeat center';
  };
  console.log(file);
  reader.readAsDataURL(file);

  return false;
};
</script>
Run Code Online (Sandbox Code Playgroud)

如何从上传的图像中检索EXIF元数据?

我试着用这个.

HTML:

<img src="image1.jpg" id="img1" exif="true" />
Run Code Online (Sandbox Code Playgroud)

JS:

console.log($("#img1").exifPretty());
Run Code Online (Sandbox Code Playgroud)

这只返回一个空集.

我还使用FileReader JQuery插件.

当我使用加载函数时,我得到一个文件,它是原始File对象的扩展名.

on:
    load: function(e, file) { }
Run Code Online (Sandbox Code Playgroud)

但是如何从中检索EXIF元数据呢?

con*_*ile -2

这是解决方案:

on:
    load: function(event, file) {
    // get image meta data
    var base64 = event.target.result.replace(/^.*?,/,'');
    var binary = atob(base64);
    var exif = EXIF.readFromBinaryFile(new BinaryFile(binary));
}
Run Code Online (Sandbox Code Playgroud)