使用PhoneGap的,如何让iPhone从照片库中选择照片的BASE64图像数据(Using Ph

2019-06-25 18:05发布

使用PhoneGap的(科尔多瓦),我试图让从照片库中选择照片的BASE64图像数据。

我能做到这一点。当照片从相机拍摄的,随着代码科尔多瓦下面的代码片段。

    navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL
 }); 

function onSuccess(imageData) {
    var image = document.getElementById('myImage');
    image.src = "data:image/jpeg;base64," + imageData;
}

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

但是,我应该怎么办时的照片被从库中选择获得的base64图像数据吗?

Answer 1:

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

我在PhoneGap的这个无解。 因此,所有我需要的是已经从他们的照片库中选择用户图像的Base64格式。 所以我把这种形象在画布上,并toDataUrl()给了我非常格式:-)



Answer 2:

你只需要告诉它从照片库中挑选:

navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
    destinationType: Camera.DestinationType.DATA_URL,
    sourceType : Camera.PictureSourceType.PHOTOLIBRARY
}); 

请注意,装载大型基地64编码的图像这样会导致和内存不足的错误在你的应用程序。 尽可能使用FILE_URI让你的照片。



Answer 3:

它的好方法图像用base64但是,当是这个函数返回的base64显示字符串。 这显示了我一个白色图像。 我的代码如下

var smallImage = document.getElementById('smallImage');
                smallImage.src = encodeImageUri(imageURI);


Answer 4:

您可以使用此插件 ,让你的形象的base64编码,它使用的iOS JS代码,但在Android的情况下,它使用本地代码来处理,然后第3节由于Android版本较低则3不处理toDataUrl的Android版本较低功能



Answer 5:

尝试了这一点。

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


Answer 6:

试试这个: https://github.com/brianvandelden/acato-service-image 。 它使用imagePicker.git科尔多瓦插件。 用一个函数来获取从所选照片中为imageData。



文章来源: Using PhoneGap, How to get base64 image data of the photo chosen from photo library in iPhone