当从具有文件URI的图库中选择时,Cordova相机插件始终返回相同的图像

时间:2014-12-18 06:49:11

标签: javascript cordova

升级到最新的cordova相机lib 0.3.4后,我可以在从图库中选择图像后获得真实图像,返回的文件调用pic.jpg,但如果我选择另一个,它将返回相同的图像同名pic.jpg,所以我坚持使用相同的图像:(

图像路径看起来像file:///storage/emulated/0/android/data/app/cache/.pic.jpg

有什么想法吗?

https://github.com/apache/cordova-plugin-camera/blob/master/src/android/CameraLauncher.java

$scope.getPhoto = function() {
        // Retrieve image file location from specified source
        navigator.camera.getPicture($scope.processImageUri, $scope.onFail, {
            quality: 88,
            correctOrientation: true,
            encodingType: Camera.EncodingType.JPEG,
            destinationType: navigator.camera.DestinationType.FILE_URI,
            sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY,
            allowEdit: true
        });

2 个答案:

答案 0 :(得分:1)

我在iOS平台(iOS 10.2)上也遇到过这个问题。我不想使用接受的移动到DATA_URI的解决方案,因为我在iOS和Android之间使用相同的代码,并且只想保留FILE_URI方法。

开始调试,发现它是因为在获取图片后调用清理函数而发生的。由于在清理调用文件从临时存储中删除,插件为下一个可用的图片提供相同的文件名。从逻辑上讲应该没问题,但是在这里播放邪恶的网页视图,从其缓存中选择旧图像,因为URL与上一个相同。

我来了一个小修理。经测试,在我的情况下,它运作良好。

我有forked the camera plugin repo和修改后的方法生成临时文件名。

我错过了父资源库的指南,我的提交不是必需的格式,所以我猜我的拉取请求会被拒绝。 (我会更新并重新创建它,因为我有一些时间)。

但是现在,除非您打算删除/添加平台(可能会从主仓库中删除而无法更改),否则您可以尝试此解决方案。

答案 1 :(得分:0)

在您的函数之后编写这些代码并替换您的" destinationType:"和我一起



  function capturePhoto()
	{
      // Take picture using device camera and retrieve image as base64-encoded string
      navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50,
        destinationType: destinationType.DATA_URL });
    }