微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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正在尝试提取不再存在的数据.

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐