Javascript-Ionic:EXIF数据不完整

我想从图片的exif数据中读取拍摄照片的日期和时间.

我使用这个库https://github.com/exif-js/exif-js来访问exif和$cordovaCamera来获取图片.

$cordovaCamera选项:(我让用户决定图片的来源(画廊或照相机),因此来源可以是1或0:

var options = {
    quality: 60, 
    destinationType: Camera.DestinationType.DATA_URL,
    sourceType: source,
    allowEdit: false,
    correctOrientation: true,
    encodingType: Camera.EncodingType.JPEG,
    popoverOptions: CameraPopoverOptions,
    saveToPhotoAlbum: true
 };

获取图片:

$cordovaCamera.getPicture(options).then(function (imageData) {
    cameraSuccess(imageData);
});

并对其进行处理:

function cameraSuccess(imageURI) {

    var imageR = new Image();
    imageR.onload = function() {
        EXIF.getData(imageR, function() {
            alert(JSON.stringify(this));
        });
    };
    imageR.src = "data:image/jpeg;base64,"+imageURI;

}

但这是我获得的唯一exif数据.

"exifdata":{  
  "Orientation":1,
  "ExifIFDPointer":38,
  "ColorSpace":1,
  "PixelXDimension":500,
  "PixelYDimension":375
},
"iptcdata":{  
}

我还尝试了Camera.DestinationType.NATIVE_URI以确保base64没问题.

我在ios仿真器(从图库中获取图像)和上述结果以及一个android设备(从相机中获取图像)上进行了测试,没有任何输出.

解决方法:

使用以下选项,我目前能够将来自Android(5.1 Nexus 5)的包含EXIF数据(我正在寻找日期/时间和GPS)的图像文件发布到服务器.但不是iOS(8.4 iPhone 5).

    var options = {
        quality: 50,
        destinationType: Camera.DestinationType.FILE_URI,
        allowEdit: true,
        encodingType: Camera.EncodingType.JPEG,
        popoverOptions: CameraPopoverOptions,
        saveToPhotoAlbum: true
    };

似乎在Camera插件过程中,iOS以某种方式剥离了大多数EXIF数据:剩余的数据与您的相似.顺便设置

<preference name="CameraUsesGeolocation" value="true"/>

config.xml中的内容似乎对GPS数据没有帮助.
在您的情况下,我怀疑exif-js正在尝试提取不再存在的数据.

仍在尝试寻找解决方案,如果我有任何更新,我将其发布.

上一篇:java – 具有id的对象不是指定的子类


下一篇:android – 在Exif中编写XPKeywords