Phonegap /cordova相机插件 – 如何获取照片的date/时间戳?

我有一个PhoneGap应用程序,需要让用户使用手机的相机拍照,并让用户从照片已经在设备上select。

我需要捕获照片拍摄date/时间作为元数据的一部分,但我很难找出如何使用Phonegap / Cordova来完成此项工作。

最初我以为我可以使用File API的FileEntry.getMetadata()调用,但是这不会返回修改时间属性的有效date。 我认为phonegap还会转换设备上的文件,以便您从相机插件接收的文件不是设备上的原始文件,所以即使getMetadata()调用工作,date也不是正确的。

有没有其他的解决方法,就是为我需要的每个平台编写我自己的相机插件版本?

看起来疯狂,这将是唯一的方法。

所以,我设法弄清楚了这一点。

date/时间标记以及一堆其他信息可以从JPEG文件中的EXIF数据标签中检索。 这可以使用这个有用的JS库 – https://github.com/jseidelin/exif-js

不幸的是,Android的cordova相机插件在转换从图库中select的图像时不会复制EXIF标签,只有在使用相机拍摄图像时才会复制EXIF标签,所以这是一个问题,但我会通过分解插件来解决这个问题。 该插件的iOS版本似乎做这个正确的事情。

代码感兴趣的人 –

var source = fromCamera ? Camera.PictureSourceType.CAMERA : Camera.PictureSourceType.PHOTOLIBRARY; var opts = { encodingType: Camera.EncodingType.JPEG, sourceType: source, destinationType: Camera.DestinationType.NATIVE_URI }; navigator.camera.getPicture( function(imageURI) { window.resolveLocalFileSystemURL(imageURI, function(entry) { entry.file(function(file) { EXIF.getData(file, function() { var datetime = EXIF.getTag(this, "DateTimeOriginal"); alert(datetime); }); // do something useful.... }, standardErrorHandler); }, function(e) { alert('Unexpected error obtaining image file.'); standardErrorHandler(e); }); }, function() { // nada - cancelled }, opts); 

像其他人一样,我不喜欢以“完全不同的方式”开始的答案,但是我遇到了与原始海报相同的问题,并使用替代相机插件cordova-plugin-camera-with-exif是我find的最佳解决scheme。