【问题标题】:Cordova camera plugin always return the same image when select from gallery with file URI从带有文件 URI 的图库中选择时,Cordova 相机插件总是返回相同的图像
【发布时间】:2014-12-18 06:49:11
【问题描述】:

升级到最新的科尔多瓦相机库 0.3.4 后,我可以在从图库中选择图像后获取真实图像 uri,返回的文件调用 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
        });

【问题讨论】:

  • 有同样的问题。你解决了吗?
  • 也有同样的问题。如果您有解决方案,很想听听您的解决方案。
  • 尝试更新相机插件,我认为这在最新版本中已修复。

标签: javascript cordova


【解决方案1】:

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

开始调试,发现是获取图片后调用清理函数导致的。由于在清理调用文件中从临时存储中删除,插件为下一张可用的图片提供相同的文件名。从逻辑上讲这应该没问题,但是这里的网络视图玩坏了,从它的缓存中挑选旧图像,因为 URL 与以前的相同。

我带来了一个小修复。对此进行了测试,就我而言,它运行良好。

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

我错过了父存储库的指南,并且我的提交不是必需的格式,所以我猜我的拉取请求将被拒绝。 (我会在有时间的时候更新并重新创建它)。

但现在,除非您计划删除/添加平台(可能会从主存储库克隆而丢失更改),否则您可以尝试此解决方案。

【讨论】:

  • 干得好。谢谢你 - 为我节省了一些调试!我已经设法在 JS 中对此进行修补,为从插件返回的图像 URI 添加时间戳,如下所示; imageURI += '?' + +新日期(); - 工作正常,仍然允许我使用当前的主人。
  • 聪明的方式。我想了想,但后来我想在插件本身中提出这个修复,所以修改了它。不幸的是,到目前为止,我的拉取请求没有任何消息。
【解决方案2】:

在你的函数之后编写这些代码并用我的替换你的“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 });
    }

【讨论】:

  • 你应该写 onPhotoDataSuccess
  • 根据documentation“DATA_URL 可能会占用大量内存并导致应用程序崩溃或内存不足错误。如果可能,请使用 FILEURI 或 NATIVE_URI”
猜你喜欢
  • 2017-04-19
  • 2018-05-11
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-29
  • 1970-01-01
相关资源
最近更新 更多