web-dev-qa-db-ja.com

Mac OS XでSVGからPNGに変換するためのコマンドラインアプリケーション

SVGからPNGに変換できる、Mac OS X上で実行できるコマンドラインプログラムはありますか?

編集:Dylan BさんがImageMagickでいい答えを出しました。参考のために、MacPortsを使ってMac OS XにSVGサポート付きのImageMagickをインストールするには、

port install imagemagick +rsvg
153
Lorin Hochstein

または何もインストールせずに:

qlmanage -t -s 1000 -o . picture.svg 

幅1000ピクセルのpicture.svg.pngが生成されます。

私はOS X 10.6.3でそれをテストしました。

220
tst

私にとって仕事に最適なツールはrsvg-convertであることがわかりました。

それはbrew install librsvgと一緒にbrewで見つけることができて、こんな感じで使われます:

rsvg-convert -h 32 icon.svg > icon-32.png

(この例では、高さ32ピクセルのPNGが作成されます。幅は自動的に決定されます。

98
Ahti

ImageMagick非常に多目的なコマンドライン画像エディタです。 GUIですね。しかし、とにかく誰がそれらを必要としています。 :P

インストール後、次のようなものが.svgを.pngに変換します。

$ convert picture.svg picture.png

元の.svgは削除されません。

40
Jessie

Commandline-Interfaceを使ったInkscape は、私にとって最良の結果をもたらします。

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

いいことに、密度を台無しにしなくても、結果の画像の正確なピクセルサイズを指定できます。

28
seb

さて、あなたがGoogle Chromeを持っているなら、私はMac上でそれをする簡単な方法を見つけました。

一文では、それはWebページ(svgファイルにある必要があります)でhtmlの画像を見て、画像を右クリックして「Copy Image」を選択し、プレビューアプリに貼り付けることです。

ステップ:

  1. ハードドライブにsvgファイルをダウンロードするか、somefile.svgと入力します。
  2. さて、同じフォルダーに、この行を含むHTMLファイルtmp.htmlを作成します。<img src="somefile.svg">
  3. それでは、Google ChromeでそのHTMLファイルを開きます。
  4. 画像が見えるはずです。画像を右クリックして「Copy Image」を選択してください。
  5. MacのPreview Appに行き、"File -> New from Clipboard"を選択してください。
  6. これでファイルのFile -> Savepngファイルができました。 (または他のファイルタイプ).

これは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ウィンドウのサイズを画面の最大サイズに変更してください。

15

一度に多くのことをしたい場合は、次のことができます。

mogrify -format png *.svg

その場で等をリサイズするオプションもあります。

5

Apache Batik を試してください。

Java -jar batik-rasterizer.jar FILES

バッチ変換もサポートしており、他にも多くの便利なオプションがあります。

4
Behrang

私はこれをnode/npmを使って svgexport にしました。

svgexport input.svg output.png
4
Ali Shakiba

Svgをレンダリングするために phantomjs を使うこともできます。利点は、基本的にはヘッドレスWebKitなので、ブラウザのように表示できることです。

それをダウンロードしたら、examplesフォルダからphantomjs(binary)とrasterizer.jsファイルが必要です。

phantomjs examples/rasterize.js Tiger.svg out.png
3
Stofke

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
1
sudo

私は自分のLinux上でこのコマンドを使います。それはあなたにとってもうまくいくはずです。

mogrify +antialias -density 2000 -verbose -format png *.svg

"-density"引数がなければ、ビットマップは非常にピクセル化されることを私は学びました。ニーズに合わせて-density値を変更してください。

1

以前にコメントしたように、ImageMagickがトリックを行います。 GraphicsMagick という点を追加したいと思いました。これはImageMagickの古いフォークで、いくつかの改善がなされています(そしてfink経由でインストールしたときの依存関係の膨張がはるかに少ない)。

0
user31752

何もインストールせずにさらに別の方法。コマンドラインではありません。

  1. Safariで.svgファイルを開きます。
  2. Alt-command-iを押してインスペクタを開きます。
  3. <svg>タグを右クリックして、[スクリーンショットのキャプチャ]を選択します。 (画像を拡大してはいけません。)

P.S小さすぎる場合に.svg画像を拡大するには、テキストエディタで.svgファイルを開き、メタ属性以外のすべての番号に0を追加します。これは、(\d+)から$10へのグローバルな正規表現の代入によって行うことができます。ここで、$1は逆参照のプレースホルダーです。

0
Haotian Yang

これは私が使ったものです:

brew install imagemagick --with-librsvg

その後、以下のコマンドを実行します。

find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *

それが役に立てば幸い。

0
Alan Dong

SVGファイルのフォルダ全体をPNGに一括変換できます。 Inkscapeのコマンドラインインターフェイスを使用して、幅80ピクセルのpngファイルを作成しました。

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

pngは元の名前で保存されます* .png