首页 文章

科尔多瓦相机从iOS上的库中返回错误的照片

提问于
浏览
1

我正在使用Cordova的相机插件(cordova-plugin-camera)让用户拍摄新照片或从他们的库中选择一张 . 奇怪的是,当我从lib中选择一张照片时,它第一次正常工作 . 但是当我尝试再次做同样的事情,但是使用不同的照片时,会返回错误的照片 - 这与第一次尝试时相同 .

为了更清楚:

  • 我按下按钮选择照片 - >我从lib中选择照片1 - >正确返回照片1

  • 我再次按下相同的按钮 - >我从lib中选择照片2 - >再次返回照片1

如果我第三次做同样的事情,它会正确返回照片2 .

这是我的代码:

// get photo
$('#modal_crud').off('click', '.crud_template_image a.photo_take, .crud_template_image a.photo_select').on('click', '.crud_template_image a.photo_take, .crud_template_image a.photo_select', function() {

    var source_type = Camera.PictureSourceType.SAVEDPHOTOALBUM;
    if ($(this).hasClass('photo_take')) {
        source_type = Camera.PictureSourceType.CAMERA;
    }

    navigator.camera.getPicture(
        function(uri) {
            $('.crud_container:visible').find('.crud_edit_image').css({
                'background-image' : 'url(' + uri + ')'
            });
            $('.crud_container:visible').find('input.image_uri').val(uri);
        },
        function(message) {
            app.ui.show_notification('error', app.ui.translate_string('There was an error selecting an image: %s', [ message ]), true, undefined, $('.crud_container:visible').find('.modal_notifications'));
        }, 
        { 
            quality: 100,
            destinationType: Camera.DestinationType.FILE_URI,
            sourceType: source_type,
            targetHeight: 400,
            targetWidth: 400
        }
    );
    return false;
});

作为补充,我说问题的 Headers 是iOS,因为我还没有机会在Android上测试 . 我不知道那里的行为是否也有问题 .

1 回答

  • 3

    我终于找到了错误行为的原因 . 实际上并不是插件返回错误的URL,而是浏览器(webview)从缓存中显示错误的图像 . 我认为插件对不同的图像(至少部分)使用相同的URI,这导致浏览器从某种缓存加载图像(我不确定它来自何处) .

    我通过在显示URI之前向URI添加时间戳来解决了这个问题 . 它现在对我来说非常好 .

相关问题