【发布时间】:2021-08-30 17:15:37
【问题描述】:
所以,我正在使用 canvg 和将 svg 文件转换为 jpg/png 的函数只是下载并忽略 svg 块元素的 id,所以我得到了空白图像,可能有什么问题?也许 Vue 不支持使用画布将 SVG 转换为 jpg/png。 这是javascript:
import canvg from "canvg";
function SVG2PNG(svg, callback) {
var canvas = document.createElement("canvas");
var w = 800;
var h = 400;
canvas.width = w;
canvas.height = h; // Create a Canvas element.
var ctx = canvas.getContext("2d"); // For Canvas returns 2D graphic.
debugger;
var data = svg.outerHTML; // Get SVG element as HTML code.
canvg.from(canvas, data); // Render SVG on Canvas.
callback(canvas); // Execute callback function.
}
function generateLink(fileName, data) {
var link = document.createElement("a");
link.download = fileName;
link.href = data;
return link;
}
export default {
methods: {
tipka() {
debugger;
var element = document.getElementById("svg"); // Get SVG element.
SVG2PNG(element, function (canvas) {
// Arguments: SVG element, callback function.
var base64 = canvas.toDataURL("image/png"); // toDataURL return DataURI as Base64 format.
generateLink("SVG2PNG-01.png", base64).click(); // Trigger the Link is made by Link Generator and download.
});
},
},
};
【问题讨论】:
-
(从一个答案到另一个问题进一步澄清问题)根据我的实验,看起来次要问题可能涉及 XML 命名空间。你能发布 opening
<svg>标签吗?它的属性在这里可能至关重要。 -
当然,我添加了开头
svg,我也认为可能是xml问题。 -
这是在
svg标签中转换的形状的完整代码(它可能对更好的测试有用):privatebin.net/…