我试图将PNG图像转换成Base64,然后通过发送请求将它们发送到我的服务器端应用程序。将图像数组转换为Base64
我已经看过了,我发现这个功能,笔者在这里做http://jsfiddle.net/handtrix/yvq5y/,那些正是我想要的:
function convertImgToBase64URL(url, callback, outputFormat){
var img = new Image();
img.crossOrigin = 'Anonymous';
img.onload = function(){
var canvas = document.createElement('CANVAS'),
ctx = canvas.getContext('2d'), dataURL;
canvas.height = this.height;
canvas.width = this.width;
ctx.drawImage(this, 0, 0);
dataURL = canvas.toDataURL(outputFormat);
callback(dataURL);
canvas = null;
};
img.src = url;}
我用这种方式:
convertImgToBase64URL(model.cells[i].attrs.image["xlink:href"], function(base64Img){
// Base64DataURL
console.log(base64Img)
});
由于你可以看到每个单元格包含一个图像,我需要转换为base64之前通过发布请求发送它,我的问题是如何将一个PNG图像数组转换为Base64,并等待它们完成,然后发送我的数组,我知道这是一个Ajax请求,我不能做这个同步因为它不是很自然的JavaScript,但我似乎无法找到解决方案。这是如何正确完成的?
你总是可以进入封闭地狱...... – Downgoat
你需要确保'ctx'和'dataURL'声明与'在“的onload”回调var'。 – Pointy
您可以使用jQuery.Deferred(),也可以将这些base64字符串添加到数组中,并通过ajax发送完整的数组。在发送之前,你可以计算''''迭代器并验证'array_base64 [i]!= null' – mk117