升级到最新的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
});
答案 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 });
}