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 系列以后。

浏览 5
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

编辑 分享
举报