У меня есть мобильное приложение PhoneGap, и я использую Camera API для захвата изображения с помощью этого кода:
navigator.camera.getPicture(function(data){
$.post('http://www.example.com', {data:data});
}, function(msg){alert(msg);}, { quality: 20 });
Это было бы нормально, но необходимо установить для параметра качества какое-то разумное значение в зависимости от используемого мобильного устройства. Некоторые могут обрабатывать значения выше 70, но у младших устройств возникают проблемы даже со значением 20. В документации Phonegap упоминается об этой проблеме, поскольку они вызваны необходимостью памяти, так как все изображение хранится в строке Base64. PhoneGap предлагает скорее указать опцию destinationType: Camera.DestinationType.FILE_URI
Но, насколько я понимаю, я получу локальный путь к файлу сохраненного изображения, который мне нужно будет прочитать в одну переменную, используя FileReader API. И затем $.post
это снова так же, как я делаю сейчас.
Мне кажется, что если бы я изменил destinationType с Base64 на FILE_URI, я бы ничего не получил, и у меня все еще были бы те же проблемы с памятью при чтении его из локального файла в переменную и при его POSTing.
Правильно ли я думаю? Или я что-то упустил, и было бы какое-то преимущество использования FILE_URI destionationType? Или есть ли лучший способ загрузить снятый снимок?