【发布时间】:2014-09-15 15:25:01
【问题描述】:
我真的很难编写一个函数来获取图像的 Base64 编码。由于此函数将成为使用 jsPDF.js 从网站即时生成 PDF 的更大脚本的一部分,因此能够计算这些 Base64 编码作为函数的结果非常重要。图像将托管在同一台服务器上,因此不会出现同源问题。我知道 canvas 元素的 .toDataURL() 方法可以做到这一点,我也知道图像需要完全加载才能正确获取 Data URL,所以我编写了这个函数
// Encode image to Base64
function encodeBase64(url, format)
{
var image = new Image(),
canvas = document.createElement("canvas"),
context = canvas.getContext("2d");
image.src = url;
image.onload = function ()
{
canvas.width = image.width;
canvas.height = image.height;
context.drawImage(image, 0, 0, image.width, image.height);
var dataURL = canvas.toDataURL(format);
alert(dataURL);
};
}
问题是我不知道如何从 onload 函数中“提取” dataURL 值,以便 encodeBase64 函数简单地返回该值,我可以将它放入一个数组中。 Alert 正确返回该字符串,因此我确定代码可以正常工作,但如果我尝试编写任何其他语句,如“return dataURL”或类似语句,我只会得到 undefined 值。请帮忙。
【问题讨论】:
标签: javascript canvas encoding base64 data-uri