android - Cordova 3.6 : how can I extract GPS Exif data from photo library in Android?

标签 android angularjs image cordova exif

我正在使用 Cordova 3.6.x 和 Angularjs 开发一个应用程序。一切似乎都工作正常,除了我无法从照片库中拍摄的图像的 exif 数据中提取日期和位置。

我的目标设备是 Android 4+

从现在起我测试了: -https://github.com/lorinbeer/cordova-exif-utility (不支持 Android :( ) -https://github.com/guilhermefarias/cordova-exif (返回错误,例如“processMessage失败:错误:TypeError:无法调用未定义的方法'toString'”和“processMessage失败:消息:S01 File1189144150”) -https://github.com/kamilersz/cordova-plugin-exif (不明白它是如何工作的)

在网上我读到 Cordova 在返回图像之前会删除所有 exif 数据。这些数据真的无法获取吗?

您能帮我解决这个问题吗?

更新

我将 Angular 与 ngCordova、ui-router 和 https://github.com/guilhermefarias/cordova-exif 一起使用。所以我利用 ui-router 的“解析”功能:

resolve: {
    picture: ['$cordovaCamera', function($cordovaCamera) {
        var options = { 
            quality : 75,
            destinationType : navigator.camera.DestinationType.FILE_URI,
            sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
            allowEdit : false,
            correctOrientation: true,
            encodingType: Camera.EncodingType.JPEG,
            saveToPhotoAlbum: false
        };
        return $cordovaCamera.getPicture(options); //TODO: we need to handle errors
    }]
}

然后在我有的相应 Controller 内

myApp.controller('UploadController', [ '$范围', '图片', 函数($范围,图片){

    //Picture
    $scope.snapShot = picture;

    CordovaExif.readData(picture, function(exifObject) {
      console.log(exifObject);
    });

等等..

但是我收到以下错误 processMessage 失败:错误:TypeError:无法调用未定义的方法“toString” processMessage 失败:堆栈:类型错误:无法调用未定义的方法“toString” 接下来是堆栈跟踪和一个巨大的字符串,我很确定它是 Base64,即使它不能与我在线尝试的任何 Base64 到图像解码器一起使用...

最佳答案

您对至少两个插件的看法是正确的:

  • lorinbeer 的 Cordova Exif 实用程序不支持 Android
  • kamilersz 的 cordova-plugin-exif 仅具有用于设置某些 Exif 元数据和从设备获取 Wi-Fi 信息的 API。

但是 guilhermefarias 的 Cordova Exif 看起来确实很有前途,如果您展示您正在尝试的代码,我也许可以帮助您。当然,获取 Exif 也不是不可能,因为它是实际文件的一部分。这只是 Cordova 的默认相机插件在从图库中选择图像时会丢失 Exif。这似乎做得很好(基于我读过的代码)并记录在案。

然后也可以将图像读取为二进制数据并应用类似 Exif.js 的内容。读取Exif。请参阅this answer由用户 Richard Nichols 介绍如何执行此操作。

关于android - Cordova 3.6 : how can I extract GPS Exif data from photo library in Android?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27863778/

相关文章:

android - 我现在应该使用什么 Android SDK?

AngularJS Jasmine 2.0 异步测试超时

java - 在任意角落绘制图像

android - Android 上的 Calimero knx api 停止工作

java - 在按下按钮之前运行一个方法,例如 document.ready 函数

angularjs - 使用来自 Angular 的数据在 Node Express 中进行外部 api 调用

javascript - Angular Karma Jasmine - 测试功能

jquery - 使用jQuery : error-handler always called预加载图像

java - 用Java捕获3D图像

java - 使用Android AFreeChart将折线图保存为png或jpeg文件