7
votes

Utilisation de téléphones, comment obtenir des données d'image de base64 de la photo choisie dans la bibliothèque de photos dans iPhone

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. xxx

mais, que dois-je faire pour obtenir les données d'image de base64 lorsque la photo est choisie parmi la bibliothèque?


0 commentaires

6 Réponses :


4
votes

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


2 commentaires

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é.



14
votes
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 :-)

4 commentaires

Je ne pense pas que cela fonctionne réellement. L'image ne charge pas asynchrone ? 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



2
votes

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


0 commentaires

0
votes

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 Fonctionnalité


0 commentaires

0
votes

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


0 commentaires