Node.JS - 用于Sharp的overlayWith()函数的SVG到图像缓冲区?

时间:2018-06-02 16:40:17

标签: javascript node.js svg buffer sharp

我正在使用带有Node.JS的Sharp NPM库,而我正试图在我的画布上添加文本。我发现here我需要使用.overlayWith(),以及另一个可以将文本转换为SVG的库。 A comment there建议使用text-to-svgvectorize-text,但这两者与text2svg一起返回SVG。 Sharp .overlayWith()函数需要图像缓冲区。如何将这些库返回的SVG转换为图像Buffer for Sharp?

2 个答案:

答案 0 :(得分:0)

找到解决方案:NPM模块SVG2IMG获取SVG字符串并将其转换为图像缓冲区。

答案 1 :(得分:0)

也许您可以尝试通过svg.js

构建所有svg上下文
var draw = SVG(document.documentElement).size(width, height);
draw.text(text).font({
 family: 'tAsset.fontFamily',
 size: 'fontHeight',
 leading: '1.2em',
 anchor: "middle"
});
return draw.svg();

然后在创建新缓冲区(svg)时使用锐利中的返回值。

sharp(buffer).overlayWith(new Buffer(svg), {
                top: model.top,
                left: model.left
            }).toBuffer(function (error, data, info) {

            });