Utiliser PhoneGap (Cordoue), j'essaie d'obtenir des données d'image de base64 de la photo choisie dans la photothèque.
Je pourrais le faire. Lorsque la photo est capturée à partir de la caméra, avec l'extrait de code ci-dessous à Cordoue. p> mais, que dois-je faire pour obtenir les données d'image de base64 lorsque la photo est choisie parmi la bibliothèque? p> p>
6 Réponses :
Il vous suffit de le dire de choisir à partir de la photothèque:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50, destinationType: Camera.DestinationType.DATA_URL, sourceType : Camera.PictureSourceType.PHOTOLIBRARY });
Simson .. oui! L'extrait ci-dessus que vous avez donné vous permettra de choisir la photo de la bibliothèque .. mais je souhaite enregistrer l'image recadrée de celui-ci vers le serveur au format BASE64. Tout ce qu'il revient, c'est juste le Fileuri ... Quelle méthode dois-je utiliser pour obtenir le format de base64 de cette image?
Ce n'est pas ce que vous avez posé posé dans votre question. S'il vous plaît revenir en arrière et modifier la question de la clarté.
function encodeImageUri(imageUri) { var c=document.createElement('canvas'); var ctx=c.getContext("2d"); var img=new Image(); img.onload = function(){ c.width=this.width; c.height=this.height; ctx.drawImage(img, 0,0); }; img.src=imageUri; var dataURL = c.toDataURL("image/jpeg"); return dataURL; } I have no solution in PhoneGap for this. So all I need is the base64 format of the image which has been chosen by user from their photo library. So I placed that image on canvas and toDataUrl() gave me the very format :-)
Je ne pense pas que cela fonctionne réellement. L'image ne charge pas asynchrone i>? Ne retournera-t-il pas avant que l'image soit chargée?
Oui ... j'avais le même problème. Vous devez stocker la chaîne de base64 dans une zone de texte cachée et le soumettre quand vous le souhaitez.
@Rockethazmat Je suis également confronté au même problème que je reçois ce dataurl après avoir terminé la boucle, mais je veux en même temps en boucle pour chaque image.
@RevathyDurairajan Comment puis-je enregistrer dataurl de chaque image dans la zone de texte. Pouvez-vous s'il vous plaît expliquer cette boucle via l'exemple. Merci d'avance
C'est le bon moyen d'obtenir une image dans la base64, mais quand la chaîne SHOW BASE64 est-elle renvoyée par cette fonction. Cela m'affiche une image blanche. Mon code est comme suit
var smallImage = document.getElementById('smallImage'); smallImage.src = encodeImageUri(imageURI);
Vous pouvez utiliser ce plugin pour vous obtenir le codage de base64 de l'image, il utilise JS Code pour iOS, mais dans le cas d'Android, il utilise du code natif pour gérer les versions Android Basculer, alors V.3 car les versions Android inférieures, puis ne manipulent pas TODatauf forte> Fonctionnalité P>
Essayez ceci.
function getPhoto(source) { // Retrieve image file location from specified source navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source }); } function onPhotoURISuccess(imageURI) { window.resolveLocalFileSystemURI(imageURI, gotFileEntry, failSystem); } function onFail(message) { alert('Failed because: ' + message); } var gotFileEntry = function(fileEntry) { // alert(fileEntry.fullPath); console.log("got image file entry: " + fileEntry.fullPath); //convert all file to base64 formats fileEntry.file( function(file) { //uncomment the code if you need to check image size //if(file.size>(1049576/2)) // { //alert('File size exceeds 500kb'); // return false; // } var reader = new FileReader(); reader.onloadend = function(evt) { console.log("Read complete!"); $('yourimageidtoshow').attr('src', evt.target.result); }; reader.readAsDataURL(file); }, failFile); }; var failSystem=function(){ console.log('failed'); } var failFile=function(){ console.log('failed'); throw "toobig"; };