SVGからPNGに変換できる、Mac OS X上で実行できるコマンドラインプログラムはありますか?
編集:Dylan BさんがImageMagickでいい答えを出しました。参考のために、MacPortsを使ってMac OS XにSVGサポート付きのImageMagickをインストールするには、
port install imagemagick +rsvg
または何もインストールせずに:
qlmanage -t -s 1000 -o . picture.svg
幅1000ピクセルのpicture.svg.pngが生成されます。
私はOS X 10.6.3でそれをテストしました。
私にとって仕事に最適なツールはrsvg-convert
であることがわかりました。
それはbrew install librsvg
と一緒にbrewで見つけることができて、こんな感じで使われます:
rsvg-convert -h 32 icon.svg > icon-32.png
(この例では、高さ32ピクセルのPNGが作成されます。幅は自動的に決定されます。
ImageMagick は非常に多目的なコマンドライン画像エディタです。 GUIですね。しかし、とにかく誰がそれらを必要としています。 :P
インストール後、次のようなものが.svgを.pngに変換します。
$ convert picture.svg picture.png
元の.svgは削除されません。
Commandline-Interfaceを使ったInkscape は、私にとって最良の結果をもたらします。
/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg
いいことに、密度を台無しにしなくても、結果の画像の正確なピクセルサイズを指定できます。
さて、あなたがGoogle Chromeを持っているなら、私はMac上でそれをする簡単な方法を見つけました。
一文では、それはWebページ(svg
ファイルにある必要があります)でhtml
の画像を見て、画像を右クリックして「Copy Image」を選択し、プレビューアプリに貼り付けることです。
ステップ:
svg
ファイルをダウンロードするか、somefile.svg
と入力します。tmp.html
を作成します。<img src="somefile.svg">
"File -> New from Clipboard"
を選択してください。File -> Save
とpng
ファイルができました。 (または他のファイルタイプ).これはMac OS X El Capitan上の現在のChrome(バージョン48.0)でテストされています。
更新:Google Chromeの制限によるものかどうかわかりません。 Chrome 58.0を使用してSVGファイルを試してみたところ、上記の方法で小さな画像が得られました。あなたもこのケースを見れば、また使用することができます
<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">
スクリーンショットを作成するのに十分な画像が画面に表示されます。 CmdShift4 または CmdShift3 たとえばMacでは。 Chromeウィンドウのサイズを画面の最大サイズに変更してください。
一度に多くのことをしたい場合は、次のことができます。
mogrify -format png *.svg
その場で等をリサイズするオプションもあります。
私はこれをnode/npmを使って svgexport にしました。
svgexport input.svg output.png
Svgをレンダリングするために phantomjs を使うこともできます。利点は、基本的にはヘッドレスWebKitなので、ブラウザのように表示できることです。
それをダウンロードしたら、examplesフォルダからphantomjs(binary)とrasterizer.jsファイルが必要です。
phantomjs examples/rasterize.js Tiger.svg out.png
ImageMagickのconvertコマンドは、他のいくつかのパラメータを使用して、私にとってそれをしたものです。これが私のバッチBashスクリプトソリューションです。タスクを複数のプロセスに分割して、すべてのコアを利用できるようにします。必要に応じて修正してください。
batchConvertToSVG.sh(引数としてプロセス数を取ります):
end=$(( $1 - 1 ))
for i in `seq 0 $end`;
do
echo Spawning helper $i of $end
./convertToSvgHelper.sh $i $1 &
done
convertToSvgHelper.sh:
n=$1
for file in ./*.svg; do
filename=${file%.svg}
echo converting file named $filename
test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
n=$((n+1))
n=$((n%$2))
done
私は自分のLinux上でこのコマンドを使います。それはあなたにとってもうまくいくはずです。
mogrify +antialias -density 2000 -verbose -format png *.svg
"-density"引数がなければ、ビットマップは非常にピクセル化されることを私は学びました。ニーズに合わせて-density値を変更してください。
以前にコメントしたように、ImageMagickがトリックを行います。 GraphicsMagick という点を追加したいと思いました。これはImageMagickの古いフォークで、いくつかの改善がなされています(そしてfink経由でインストールしたときの依存関係の膨張がはるかに少ない)。
何もインストールせずにさらに別の方法。コマンドラインではありません。
<svg>
タグを右クリックして、[スクリーンショットのキャプチャ]を選択します。 (画像を拡大してはいけません。)P.S小さすぎる場合に.svg画像を拡大するには、テキストエディタで.svgファイルを開き、メタ属性以外のすべての番号に0
を追加します。これは、(\d+)
から$10
へのグローバルな正規表現の代入によって行うことができます。ここで、$1
は逆参照のプレースホルダーです。
これは私が使ったものです:
brew install imagemagick --with-librsvg
その後、以下のコマンドを実行します。
find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *
それが役に立てば幸い。
SVGファイルのフォルダ全体をPNGに一括変換できます。 Inkscapeのコマンドラインインターフェイスを使用して、幅80ピクセルのpngファイルを作成しました。
find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;
pngは元の名前で保存されます* .png