Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从HTML5 FileApi加载的图像检索EXIF图像元数据?_Javascript_Jquery_Html_Filereader - Fatal编程技术网

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

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(/^.*?,/,'');

我正在使用HTML5

HTML:

这只返回一个空集

我还使用了

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

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);


});