svg2pngSVG-to-PNG 轉(zhuǎn)換器
svg2png 是一個使用 PhantomJS 將 SVG 轉(zhuǎn)換為 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 技術(shù)上,使用一個 headless WebKit 實例來渲染你的 SVG。這比GraphicsMagick或Inkscape等其他解決方案能產(chǎn)生更精確的渲染。
此外,由于Phantomjs npm包的出色表現(xiàn),它很容易跨平臺安裝--你甚至不需要在你的PATH中設(shè)置PhantomJS。
以前版本的 svg2png 試圖根據(jù)寬度、高度和 viewBox 屬性來推斷出良好的尺寸。從 3.0 版本開始試圖盡可能地貼近在瀏覽器中加載 SVG 文件的行為。其規(guī)則是:
- 任何以百分比為單位的寬度或高度屬性都會被忽略,并且不計入后續(xù)規(guī)則中。
- 尺寸選項 { width, height } 覆蓋了SVG文件中的任何寬度或高度屬性,包括后續(xù)規(guī)則。如果尺寸對象中缺少一個鍵(即{寬度}或{高度}),SVG文件中的相應(yīng)屬性將被刪除。
- 沒有viewBox屬性的width和height屬性會導(dǎo)致輸出為這些尺寸;這可能會裁剪圖像,或者在底部和右側(cè)擴(kuò)展出空白空間。
- 帶有viewBox屬性的寬度和/或高度屬性會使圖像按照這些尺寸縮放。如果比例與viewBox的長寬比不一致,圖像將被擴(kuò)展并居中,在額外的尺寸上有空隙。當(dāng)viewBox存在時,寬度或高度中的一個可以被省略,缺少的那個可以從viewBox的長寬比中推斷出來。
- 當(dāng)既沒有寬度也沒有高度屬性時,promise 會被拒絕。
svg2png 使用最新的 ES2015 features,因此需要最新版本的 Node.js。僅支持 6.x 系列以后。
評論
圖片
表情
