InkscapeにはCLIがあったらしい。これを利用するとSVGから様々なファイル形式、特にPNGへの変換を自動化しやすくなる。最初PhantomJSとcanvas使ってやろうかとか錯乱してた。後出しだけどSVG Advent Calendar 2014の12日目の記事ということにしておこう。
例えばin.svg
を幅256ピクセルのPNGファイルとしてout.png
に変換したいとする。Inkscapeの実行ファイルのディレクトリーへパスが通っているとすると、以下のようなオプションで実行すれば変換される。
$ inkscape --without-gui --export-width=256 --file=in.svg --export-png=out.png
--without-gui
でGUIの起動を無効にし、--export-width
で幅を(高さはアスペクト比を維持してくれる)、--file
で変換元のSVGファイルを、そして--export-png
で変換先のPNGファイル名を指定する。複数ファイルの変換などについては無理なようだが、実用上はあまり問題ないようにも思える。Inkscape v0.91-pre.3できちんと変換できることを確認した。
Windows版ではinkscape.exe
にはCLIがないが、同じ場所にあるinkscape.com
がコマンド・プロンプト用の実行ファイルになっているので、パスさえ通せばこのままでちゃんと使える。
自動化目的だったのでsvg2pngという名前のGruntタスクを書いてみたりもした(使い始めた)。もっと雑に一対多で変換できるような設定を書けると良さそう。