我正在开发一个phonegap应用程序并使用navigator.getPicture
方法来获取图像。
我得到照片的方式是:
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.FILE_URI });
function onSuccess(imageURI) {
var image = document.getElementById('myImage');
image.src = imageURI;
}
就像在phonegap doc中的例子一样。
我希望能够使用imageURI然后将其转换为图像数据,以便稍后上传。 (我不想使用phonegap的FileTransfer)
到目前为止,我已经尝试了Get image data in JavaScript?和How can you encode a string to Base64 in JavaScript?
当我尝试以下操作时,
function onSuccess(imageURI) {
getBase64Image(imageURI);
}
function getBase64Image(img) {
// Create an empty canvas element
var canvas = document.createElement("canvas");
canvas.width = img.width;
canvas.height = img.height;
// Copy the image contents to the canvas
var ctx = canvas.getContext("2d");
ctx.drawImage(img, 0, 0);
// Get the data-URL formatted image
// Firefox supports PNG and JPEG. You could check img.src to
// guess the original format, but be aware the using "image/jpg"
// will re-encode the image.
var dataURL = canvas.toDataURL("image/png");
console.log(dataURL); //here is where I get 'data:,'
return dataURL.replace(/^data:image\/(png|jpg);base64,/, "");
}
在返回前打印dataURL
。我只是以data:,
为内容。
关于我做错的任何想法?
答案 0 :(得分:0)
您可以尝试将其作为DATA_URL。您的里程可能会有所不同,因为当图像转换为Base64字符串时,您可能会遇到内存不足错误。
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL });
function onSuccess(imageURI) {
var image = document.getElementById('myImage');
image.src = imageURI;
}
或者,您可以使用FileReader.readAsDataURL()。
在早期版本的Android上未实现canvas.toDataURL方法。