svg2pngSVG-to-PNG 转换器
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 系列以后。
评论