使用PhoneGap(Cordova),我试图获取从照片库中选择的照片的base64图像数据。
我可以这样做..当从相机拍摄照片时,使用下面的Cordova代码片段。
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图像数据?
答案 0 :(得分:14)
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()给了我非常的格式: - )
答案 1 :(得分:4)
你只需要告诉它从照片库中选择:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL,
sourceType : Camera.PictureSourceType.PHOTOLIBRARY
});
请注意,加载大型基础64位编码图像可能只会导致应用中的内存错误。尽可能使用FILE_URI来拍照。
答案 2 :(得分:2)
它是在base64中获取图像的好方法,但是当显示此函数返回的base64字符串时。它显示我一个白色的图像。我的代码如下
var smallImage = document.getElementById('smallImage');
smallImage.src = encodeImageUri(imageURI);
答案 3 :(得分:0)
你可以使用这个plugin来获取图像的base64编码,它使用iOS的js代码,但是在android的情况下它使用本机代码来处理低于v.3的android版本因为android版本低于3不能处理 toDataUrl 功能
答案 4 :(得分:0)
试试这个。
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";
};
答案 5 :(得分:0)
试试这个:https://github.com/brianvandelden/acato-service-image。它使用imagePicker.git cordova插件。具有从所选图片中获取imageData的功能。