2016-02-17 3 views
1

Я использую плагин камеры для Кордовы (cordova-plugin-camera), чтобы пользователь мог сделать новую фотографию или выбрать ее из своей библиотеки. Странно, что когда я выбираю фотографию из библиотеки, она работает правильно в первый раз. Но когда я пытаюсь сделать то же самое снова, но с другой фотографией, возвращается неправильная фотография - это то же самое, что и в первой попытке.Камера Кордовы, возвращающая неправильную фотографию из библиотеки на iOS

Чтобы сделать его более ясным:

  1. я нажимаю кнопку, чтобы выбрать фотографию -> Я выбираю фото 1 из Lib -> возвращает фото 1 правильно
  2. я снова нажать на кнопку -> I выбрать фото 2 из lib -> возвращает фото 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; 
}); 

Подобно тому, как дополнение, я говорю ИСН по названию вопроса, потому что у меня не было возможности еще испытать на Android. Я не знаю, есть ли там поведение.

+0

Мы наблюдаем подобное поведение при съемке новых фотографий с помощью камеры на iOS. Мы получаем результат как FILE_URI и присваиваем URI новому тегу для его отображения. В первый раз он нормально работает, после чего он ошибочно отображает предыдущее изображение. Выбор из библиотеки имеет тенденцию работать хорошо (до сих пор). Вы нашли что-нибудь о своей проблеме или просто ушли? – Neek

+0

Решения пока нет, проблема по-прежнему существует для меня – qpwr

+0

Право. Мы применили обходной путь для вызова '.cleanup()' в плагине непосредственно перед вызовом '.getPicture (...)', в надежде, что он удалит все предыдущие фотографии, которые были сделаны, и, таким образом, он может только дайте нам только что снятую фотографию. Однако это не помогает, если опция галереи изображений возвращает неправильный файл :) – Neek

ответ

2

Наконец-то я нашел причину ошибочного поведения. На самом деле плагин не возвращал неверный URL-адрес, но браузер (веб-просмотр) отображал неправильное изображение из кеша. Я думаю, что плагин использует одни и те же URI для разных изображений (по крайней мере частично), что заставляет браузер загружать изображение из какого-то кеша (я не уверен, откуда это взялось).

Я решил проблему, добавив временную метку в URI перед ее отображением. Теперь он отлично подходит для меня.