【发布时间】:2014-02-06 11:28:40
【问题描述】:
今天早些时候,我已经成功地使用 javascript 将 SVG 文件转换为 JPEG。主要步骤是:
- 从 url 获取 SVG 图像
- 将图像添加到 HTML5 画布
- 将画布转换为以 base64 编码的 JPEG
我在 jsPDF-master 上复制了 getImageFromUrl 函数来实现这一点。
var getImageFromUrl = function (url, callback) {
var img = new Image,
data, ret = {
data: null,
pending: true
};
img.onError = function () {
throw new Error('Cannot load image: "' + url + '"');
}
img.onload = function () {
var canvas = document.createElement('canvas');
document.body.appendChild(canvas);
canvas.width = img.width;
canvas.height = img.height;
var ctx = canvas.getContext('2d');
ctx.drawImage(img, 0, 0);
// Grab the image as a jpeg encoded in base64, but only the data
data = canvas.toDataURL('image/jpeg').slice('data:image/jpeg;base64,'.length);
// Convert the data to binary form
data = atob(data)
document.body.removeChild(canvas);
ret['data'] = data;
ret['pending'] = false;
if (typeof callback === 'function') {
callback(data);
}
}
img.src = url;
return ret;
}
通过该函数,要转换的图像实际上是一个文件。就我而言,我没有文件,只有原始代码(使用文本编辑器打开 SVG 文件时的文本)。
我的问题是:
如何将 SVG 文件的原始代码添加到 HTML 画布中?这个过程是否也像图像对象一样具有 .onload 事件属性?
谢谢
【问题讨论】:
标签: javascript html canvas svg