我正在构建cordova android项目。问题是通过cordova相机插件添加图片。当我尝试用新的图像删除当前图像时,一切顺利。
始终获取第一张图片。我尝试清除相机缓存并使用一些随机数更改img属性。那没有用。可以做些什么?
$(document).on('touchstart', '#takePic', function () {
navigator.camera.cleanup();
navigator.camera.getPicture(onSuccessC, onFail, {
quality: 70,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.SAVEDPHOTOALBUM,
correctOrientation: true,
allowEdit: true
});
$("#takePic").toggle();
});
function onSuccessC(imageURI) {
var image = document.getElementById('largeImage');
image.src = imageURI;
alert(image.src);
$("#largeImage").show();
}
$(document).on('touchstart', '#largeImage', function () {
$("#largeImage").prop("src", "img/logo.png" + '?' + Math.random());
$("#largeImage").hide();
$("#takePic").toggle();
});
$(document).on('pagebeforeshow', '#add-vendor', function () {
$("#largeImage").hide();
});
<div id="takePic" class="ui-btn ui-icon-camera ui-btn-icon-notext"></div>
<img id="largeImage" src="" width="120" hspace="20" vspace="20" />
不能提供一个工作示例,以便在没有cordova.js文件的情况下无法正常工作。
修改
首次自制调查结果。如果我关闭编辑功能,那么图像uri看起来像.... / cache / modified.jpg?1417011797953这显然意味着缓存有效。顺便说一句,所有的waork都很好。
如果我打开编辑功能,我会得到像这样的图像... / chache / .pic.jpg乍一看没有缓存...会进一步看到它。
答案 0 :(得分:3)
进一步调查显示插件中存在错误。启用编辑功能时,缓存无效。为了解决这个问题,我只想添加一些randoms。
function onSuccess(imageURI) {
var image = document.getElementById('largeImage');
image.src = imageURI + '?' + Math.random();
alert(image.src);
$("#largeImage").show();
}
祝你有个美好的一天。
答案 1 :(得分:1)
答案 2 :(得分:0)
此插件已添加当前时间戳,以使缓存文件名(实际上通过获取具有70%质量的变体来编辑图像,因此需要缓存)是唯一的,并防止您遇到的麻烦(请参阅{{ 3}}
我建议您使用console.log将imageURI打印到调试器,并检查是否以某种方式多次使用相同的URI。
答案 3 :(得分:0)
根据https://github.com/apache/cordova-plugin-camera/blob/master/doc/index.md#description-1,cleanup
仅适用于Camera.sourceType
的值等于Camera.PictureSourceType.CAMERA
和 Camera.destinationType
等于{{ 1}}这意味着它仅在您从相机捕获并保存到设备时才有效。