Phonegap – Choisissez l'image à partir de la galerie

Est-ce que quelqu'un peut me dire ou me montrer comment obtenir une image de la galerie d'images du téléphone dans Phonegap / Android? Il y a des docs pour accéder à la caméra (ce qui fonctionne bien) mais pas à choisir une image existante.

Je recherche Phonegap / Javascript plutôt que Java.

Merci d'avance!

Erm, les Camera couvrent. Cela ne fonctionne-t-il pas pour vous? Découvrez Camera.PictureSourceType pour plus de détails. Le site docs donne cet exemple pour dériver une image ainsi:

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

sourceType est le bit crucial ici. Il peut être Camera.PictureSourceType.CAMERA (par défaut), ou plus utile pour vous, il peut être Camera.PictureSourceType.PHOTOLIBRARY ou Camera.PictureSourceType.SAVEDPHOTOALBUM .

Documentation caméra

Vous pouvez également utiliser la bibliothèque suivante: https://github.com/wymsee/cordova-imagePicker Je préfère celui-ci étant plus petit, facile à mettre en œuvre et ne nécessite pas d'autorisation pour la caméra.

Jetez un oeil à cette publication , cela peut vous aider.

Parfois, vous pouvez rencontrer un problème lors du téléchargement d'une image existante. La solution est simple, par cette réponse . En bref, vous devez convertir l'URI natif Android sur un que l'API peut utiliser:

 // 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); } ); 
 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); 

Je travaille sur le plug-in cordova-plugin-photothèque-bibliothèque qui fournit une plate-forme multi-plate-forme pour énumérer à travers toutes les photos sur le périphérique.

Usage:

 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 }); });