使用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图像数据吗?
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()给了我非常格式:-)
你只需要告诉它从照片库中挑选:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.PHOTOLIBRARY
});
请注意,装载大型基地64编码的图像这样会导致和内存不足的错误在你的应用程序。 尽可能使用FILE_URI让你的照片。
它的好方法图像用base64但是,当是这个函数返回的base64显示字符串。 这显示了我一个白色图像。 我的代码如下
var smallImage = document.getElementById('smallImage');
smallImage.src = encodeImageUri(imageURI);
您可以使用此插件 ,让你的形象的base64编码,它使用的iOS JS代码,但在Android的情况下,它使用本地代码来处理,然后第3节由于Android版本较低则3不处理toDataUrl的Android版本较低功能
尝试了这一点。
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";
};
试试这个: 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