svg2pngSVG-to-PNG 转换器

联合创作 · 2023-09-29 15:48

svg2png 是一个使用 PhantomJS 将 SVG 转换为 PNG 的工具。

const fs = require("pn/fs"); // https://www.npmjs.com/package/pn
const svg2png = require("svg2png");

fs.readFile("source.svg")
    .then(svg2png)
    .then(buffer => fs.writeFile("dest.png", buffer))
    .catch(e => console.error(e));

svg2png 建立在最新的 PhantomJS 技术上,使用一个 headless WebKit 实例来渲染你的 SVG。这比GraphicsMagick或Inkscape等其他解决方案能产生更精确的渲染。

此外,由于Phantomjs npm包的出色表现,它很容易跨平台安装--你甚至不需要在你的PATH中设置PhantomJS。

以前版本的 svg2png 试图根据宽度、高度和 viewBox 属性来推断出良好的尺寸。从 3.0 版本开始试图尽可能地贴近在浏览器中加载 SVG 文件的行为。其规则是:

  • 任何以百分比为单位的宽度或高度属性都会被忽略,并且不计入后续规则中。
  • 尺寸选项 { width, height } 覆盖了SVG文件中的任何宽度或高度属性,包括后续规则。如果尺寸对象中缺少一个键(即{宽度}或{高度}),SVG文件中的相应属性将被删除。
  • 没有viewBox属性的width和height属性会导致输出为这些尺寸;这可能会裁剪图像,或者在底部和右侧扩展出空白空间。
  • 带有viewBox属性的宽度和/或高度属性会使图像按照这些尺寸缩放。如果比例与viewBox的长宽比不一致,图像将被扩展并居中,在额外的尺寸上有空隙。当viewBox存在时,宽度或高度中的一个可以被省略,缺少的那个可以从viewBox的长宽比中推断出来。
  • 当既没有宽度也没有高度属性时,promise 会被拒绝。

svg2png 使用最新的 ES2015 features,因此需要最新版本的 Node.js。仅支持 6.x 系列以后。

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报