当前位置:  开发笔记 > Android > 正文

Phonegap/Cordova相机插件 - 如何获取照片的日期/时间戳?

如何解决《Phonegap/Cordova相机插件-如何获取照片的日期/时间戳?》经验,为你挑选了1个好方法。

我有一个Phonegap应用程序,需要让用户使用手机的相机拍照,让用户从设备上的照片中选择.

我需要捕获照片拍摄的日期/时间作为元数据的一部分,但我很难弄清楚如何使用Phonegap/Cordova执行此操作.

最初我以为我可以使用File API的FileEntry.getMetadata()调用,但这不会返回modifyTime属性的有效日期.我认为phonegap还会转换设备上的文件,以便你从相机插件中收回的不是设备上的原始文件,所以即使getMetadata()调用有效,日期也不正确.

除了为我需要的每个平台编写自己的相机插件版本之外,还有其他方法吗?

似乎很疯狂,这将是解决它的唯一方法.



1> Richard Nich..:

所以,我已经成功解决了这个问题.

可以从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);


我在ios仿真器上执行此操作时遇到问题.DateTimeOriginal标记不可用.如果将`EXIF.getTag()`更改为`EXIF.getAllTags()`然后打印出每个标签,我只返回以下内容:`ExifIFDPointer``ColorSpace``PixelXDimension``PixelYDimension`
可用的标签将根据JPEG源而有所不同.我尝试过的物理电话设备支持DateTimeOriginal标记,但您应该处理预期标记不存在的情况,而是提供默认值(或引发错误等).
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有