Javascript Phonegap |将imageuri转换为base64 |使用jquery将其上传到服务器后获取黑色图像
我需要来自Javascript Phonegap |将imageuri转换为base64 |使用jquery将其上传到服务器后获取黑色图像,javascript,jquery,cordova,phonegap-build,phonegap-cli,Javascript,Jquery,Cordova,Phonegap Build,Phonegap Cli,我需要来自imageuri的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;
imageuri
的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;
}
我还尝试了其他选项,但没有获得solid solution来获取有效的base64 imagedata。我不想使用文件传输方法上载图像。我想将imageuri
转换为简单的base64字符串。请给我具体的答案
谢谢请注意,我没有在PhoneGap中测试过这个 您可能被异步加载的映像捕获;在实际加载和完整处理之前,您将其编码为字符串 处理这一问题的方法多种多样;一种可能是使用
success()
方法处理返回值,一旦加载并绘制图像,就会调用返回值:
function encodeImageUri(imageUri, success)
{
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);
success(c.toDataURL("image/jpeg"));
};
img.src=imageUri;
}
然后,您需要使用一个处理最终结果的函数调用encodeImageUri
,例如:
encodeImageUri(" < url > ", function (data) {
console.log(data);
});
encodeImageUri(“”,函数(数据){
控制台日志(数据);
});
根据PhoneGap使用的安全模型,您可能必须注意与CORS相关的问题(请参阅) 在将内容转储到服务器端的映像之前,您需要删除任何内容。我想你错过了。参考:虽然PHP提供了一个不错的想法,但AIT在使用navigator.camera.DestinationType.DATA_URL的getPicture方法时工作正常,但我无法将图像uri转换为base64字符串。请注意,这决不是一个完美的解决方案-例如,理想情况下,这里也会有一个错误处理程序。