Phonegap - Выберите изображение из галереи - PullRequest
22 голосов
/ 14 июля 2011

Может кто-нибудь сказать мне, или указать мне, как получить изображение из галереи изображений телефона в Phonegap / Android? Есть документы по доступу к камере (что прекрасно работает), но не по выбору существующего изображения.

Я ищу Phonegap / Javascript, а не Java.

Заранее спасибо!

Ответы [ 6 ]

47 голосов
/ 14 июля 2011

Хм, документы Camera охватывают это.Это не работает для вас?Проверьте Camera.PictureSourceType для деталей.Сайт документации дает этот пример для получения изображения таким образом:

function getPhoto(source) {
  // Retrieve image file location from specified source
  navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50,
    destinationType: destinationType.FILE_URI,
    sourceType: source });
}

sourceType является решающим битом здесь.Это может быть Camera.PictureSourceType.CAMERA (по умолчанию) или более полезным для вас это может быть Camera.PictureSourceType.PHOTOLIBRARY или Camera.PictureSourceType.SAVEDPHOTOALBUM.

Документация камеры

5 голосов
/ 13 января 2015

Вы также можете использовать следующую библиотеку: https://github.com/wymsee/cordova-imagePicker Я предпочитаю этот, так как он меньше, прост в реализации и не требует разрешения для камеры.

2 голосов
/ 14 ноября 2012

Взгляните на этот пост , он может вам помочь.

Иногда вы можете столкнуться с некоторыми проблемами при загрузке существующего изображения.Решение простое, за этот ответ .Вкратце, вам нужно преобразовать собственный URI Android в тот, который может использовать API:

// URL you are trying to upload from inside gallery
window.resolveLocalFileSystemURI(img.URI, function(entry) {
  console.log(entry.fullPath);
  }, function(evt){
    console.log(evt.code);
  }
);
1 голос
/ 04 апреля 2014
document.addEventListener("deviceready",function(){

            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem){ 
                var sdcard = fileSystem.root;

                sdcard.getDirectory('dcim/camera',{create:false}, function(dcim){
                    var directoryReader = dcim.createReader();
                    directoryReader.readEntries(function(entries){
                       for (var i=0; i<entries.length; i++) {
                           entries[i].file(function(f){
                                 var reader = new FileReader();
                                 reader.onloadend = function (evt) {
                                 var url= evt.target.result;//base64 data uri

                                 console.log(url)
                                 reader.abort();
                             };
                             reader.readAsDataURL(f);

                           },function(error){
                               console("Unable to retrieve file properties: " + error.code);

                           });

                       }

                    },function(e){
                        console.log(e.code);
                    });


                }, function(error){
                    console.log(error.code);
                });


            }, function(evt){ // error get file system
                 console.log(evt.target.error.code);
            });



        } , true);
0 голосов
/ 12 декабря 2017

Easy

Первый добавить плагин камеры в проект в CMD.

F:\phonegap>myapp>cordova plugin add cordova-plugin-camera

А потом попробуй

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'" />
        <title>PhoneGap app</title>

        <!-- Script -->
        <script type="text/javascript" src="cordova.js" ></script>
        <script type='text/javascript' src='jquery-3.0.0.js' ></script>
        <script type='text/javascript'>
        $(document).ready(function(){

            // Take photo from camera
            $('#but_take').click(function(){
                navigator.camera.getPicture(onSuccess, onFail, { quality: 20,
                    destinationType: Camera.DestinationType.FILE_URL 
                });
            });

            // Select from gallery 
            $("#but_select").click(function(){
                navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
                    sourceType: Camera.PictureSourceType.PHOTOLIBRARY, 
                    allowEdit: true,
                    destinationType: Camera.DestinationType.FILE_URI
                });
            });

            // Change image source
            function onSuccess(imageData) {
                var image = document.getElementById('img');
                image.src = imageData + '?' + Math.random();;
            }

            function onFail(message) {
                alert('Failed because: ' + message);
            }

        });
        </script>
    </head>
    <body>
        <div style="margin:0 auto; width:30%!important;text-align: center;">
            <img src="img/cam2.jpg" id='img' style="width: 100px; height: 100px;">
        </div><br/>
        <div style="width:100%; text-align:center; padding:10px;">
            <button id='but_take'>Take photo</button>
            <button id='but_select'>Select photo from Gallery</button>
        </div>
    </body>
</html>

Я на 100% уверен, что это работает.

ссылка здесь Выберите изображение из камеры или галереи - PhoneGap

0 голосов
/ 12 октября 2016

Я работаю над cordova-plugin-photo-library плагином, который обеспечивает кроссплатформенный способ перечисления всех фотографий на устройстве.

Использование:

cordova.plugins.photoLibrary.getLibrary(function (library) {
    // Here we have the library as array
    cordova.plugins.photoLibrary.getThumbnailUrl(library[0],
        function (thumbnailUrl) { image.src = thumbnailUrl; },
        function (err) { console.log('Error occured'); },
        {
            thumbnailWidth: 512,
            thumbnailHeight: 384,
            quality: 0.8
        });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...