2015-08-31 37 views
2

我想从照片的exif数据中获取照片的日期和时间。Ionic:EXIF数据不完整

我使用此库的https://github.com/exif-js/exif-js访问exif$cordovaCamera来获得照片。

$cordovaCamera选项:(我让用户决定,其中所述图片应该来自(画廊或相机),所以source可以是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是没有问题的。

我在没有任何输出的情况下,使用上述结果和android设备(从相机拍摄图像)在ios仿真器(从图库中获取图像)上测试它。

+0

我认为,而不是使用EXIF外部库,你可以使用文件插件来获取日期和时间文件的细节 –

+0

同意@Anilkumar –

+0

嗯,我也需要其他EXIF信息,我不认为我可以让这些文件插件。 – Mazz

回答

2

使用以下选项,我目前可以从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"/> 

in​​3210似乎不帮助GPS数据。 在你的情况下,我怀疑exif-js试图提取不再存在的数据。

还在试图找到解决方案,如果我有任何更新,我会发布它。

+0

我忘记了:在选项中使用targetWidth和targetHeight导致Android去除元数据,所以也许对于correctOrientation – user2364174

0

这是Cordova相机插件中的一个错误,它在拾取图像时会剥下一些标签。