我有一个Phonegap应用程序,需要让用户使用手机的相机拍照,让用户从设备上的照片中选择.
我需要捕获照片拍摄的日期/时间作为元数据的一部分,但我很难弄清楚如何使用Phonegap/Cordova执行此操作.
最初我以为我可以使用File API的FileEntry.getMetadata()调用,但这不会返回modifyTime属性的有效日期.我认为phonegap还会转换设备上的文件,以便你从相机插件中收回的不是设备上的原始文件,所以即使getMetadata()调用有效,日期也不正确.
除了为我需要的每个平台编写自己的相机插件版本之外,还有其他方法吗?
似乎很疯狂,这将是解决它的唯一方法.
所以,我已经成功解决了这个问题.
可以从JPEG文件内的EXIF数据标签中检索日期/时间戳以及一堆其他信息.这可以使用这个有用的JS库来完成 - https://github.com/jseidelin/exif-js
不幸的是,用于Android的Cordova相机插件在转换从库中选择的图像时不会复制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);