Javascript 从HTML5 FileApi加载的图像检索EXIF图像元数据?
我正在使用HTML5 HTML: 这只返回一个空集 我还使用了 当我使用load函数时,我得到一个文件,它是原始文件对象的扩展名Javascript 从HTML5 FileApi加载的图像检索EXIF图像元数据?,javascript,jquery,html,filereader,Javascript,Jquery,Html,Filereader,我正在使用HTML5 HTML: 这只返回一个空集 我还使用了 当我使用load函数时,我得到一个文件,它是原始文件对象的扩展名 on: load: function(e, file) { } 但如何从中检索EXIF元数据?这是解决方案: on: load: function(event, file) { // get image meta data var base64 = event.target.result.replace(/^.*?,/,'');
on:
load: function(e, file) { }
但如何从中检索EXIF元数据?这是解决方案:
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));
}
如果未定义EXIF,则使用
var EXIF=require('./EXIF.js')代码>FTW
我设法让那只野兽在没有魔术的情况下工作(快速、肮脏的试错结果):
“严格使用”;
var EXIF=require('./EXIF.js');
$(函数(){
$('#fileinput')。在('change',function()上{
var files=this.files,
i=0;
对于(i=0;i,在exif.js的帮助下,以下脚本可以从文件输入获取exif
$('#imageupload').change(function(){
var file = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var exif = EXIF.readFromBinaryFile(this.result);
console.log(exif);
}
reader.readAsArrayBuffer(file);
});
@Andreas我使用FileReader JQuery插件来检索文件:我有一个文件对象,但我无法获取元数据。请查看我的问题更新。您可以发布一个答案吗?在您的示例中,您没有使用FileReader插件,所以您甚至尝试过链接so问题的解决方案吗?使用。readAsBinaryString
从FileReader
,将此字符串包装成一个二进制文件
(包含在EXIF
lib中)将此对象馈送到EXIF.readFromBinaryFile(binaryFileObject)
我不知道它为什么说“ReferenceError:EXIF未定义”,甚至我也添加了jquery.exif.js。我认为这个答案需要exif-js依赖关系,因此您会收到exif-not-defined错误:(也就是说这不是一个很好的答案,请检查这个答案:)
console.log($("#img1").exifPretty());
on:
load: function(e, file) { }
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));
}
'use strict';
var EXIF = require('./exif.js');
$(function() {
$('#fileinput').on('change', function(){
var files = this.files,
i=0;
for(i=0; i<files.length;++i){
previewImage(this.files[i]);
}
});
function previewImage(file) {
var gallery = $('#gallery'),
thumb = null,
img = null,
reader= null;
if(!file.type.match('image/*')){
throw 'File type must be an image';
}
thumb = $('<div />',{class: 'thumbnail'}).appendTo(gallery);
img = $('<img />');
reader = new FileReader();
reader.onload = function(e){
img.prop('src',reader.result);
// important for exif-js! Set src attribute after calling img.prop
img.src = img.prop('src');
img.appendTo(thumb);
EXIF.getData(img, function() {
console.log(EXIF.pretty(img));
});
};
reader.readAsDataURL(file);
}
});
$('#imageupload').change(function(){
var file = this.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var exif = EXIF.readFromBinaryFile(this.result);
console.log(exif);
}
reader.readAsArrayBuffer(file);
});