Ric*_*ols 7 camera android ios cordova
我有一个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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6973 次 |
| 最近记录: |