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


167

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

編集:ディランBはImageMagickで良い答えを持っていました。参考として、MacPortsを使用してMac OS XにSVGサポート付きImageMagickをインストールするには、次のようにします。

port install imagemagick +rsvg

2
私はGoogle Chromeを持っている場合...方法を見つけないと、他のものをインストールする必要:superuser.com/questions/134679/...
nopole

cairosvg.orgはpython3で 動作し、問題はないようです。pip3 install cairosvg
JayRizzo

回答:


234

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

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

1000ピクセル幅のpicture.svg.pngを生成します。

OS X 10.6.3でのみテストしました。


38
残念ながら、これは画像を正方形にクリップします。
マーティンピーターズ

7
ああ、qlmanage -tQuick Look(Finderなど)で使用されるサムネイルを提供します。賢いアイデア。残念ながら、これらのサムネイルは、特にテキストが関係している場合、バグが多い場合があります。
シュリーバツァー

7
これにより、第1象限のsvgファイルで画像が生成されます。自動トリミングしません。名詞プロジェクトからファイルを変換しようとしています-これがうまくいったことを願っています。
アレックスクック

7
このソリューションでは、透明性を考慮に入れていません。rsvg-convert@ahtiの答えのツールは、以前はうまく機能していました。
BenR

3
-sオプションの後に幅と高さの両方のパラメーターを入れてもうまくいきませんでした。それでも正方形に切り取ります。とてもイライラする!
エリックファンデルノイト

107

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

brewにbrew install librsvgあり、次のように使用されます。

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

(この例では、高さ32pxのpngを作成します。幅は自動的に決定されます。


これは、マーベリックスとcommons.wikimedia.org/wiki/…
アロン

ImageMagickの者は、一方で、実際にこの1は、働いていたconvertエラーを発行し、複雑なSVGひそかに失敗した
ブライス

7
これは、私がOS X Yosemite +1で見つけた最高のソリューションです!
グレッグマーティン

奇妙なことに、これは私のSVGの一部で失敗しました。qlmanage答えは、それらのすべてのために働いたが、私はしたくない白色の背景を、置きます。
須藤

1
を使用するrsvg-convertと、結果の.pngのサイズは適切になりましたが、元の色ではなく、すべて黒になりました。ではqlmanage、画像の正方形にトリミングされます。まだ解決策を探している:-(
エリックファンデルノイト

43

ImageMagick非常に汎用性の高いコマンドライン画像エディターで、GUIがあればPhotoshopに匹敵するでしょう。しかし、とにかく誰がそれらを必要とします。:P

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

$ convert picture.svg picture.png

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


それは一種の中で、GUIを持っていますdisplay
イグナシオバスケス-アブラムス

1
ImageMagickをFinkでインストールしたとき、svgをpngに変換できませんでした-いくつかのエラーがありました。librsvg2-binもインストールする必要があることがわかりました。
TST

librsvg2-binがインストールされていない場合(OS Xなど)、これは失敗します。それはOS X上でインストールされますする方法を見つけることができませんでした
ジョン・シーハン

3
ぼやけた画像を生成するため、SVGのサイズを変更する場合、これはうまく機能しません。
-Behrang

3
すべてのSVGファイルも正しく変換されません。少なくともqlmanageは画像のすべての部分を取得しました。
ヨハン14

28

Inkscapeのコマンドラインインターフェイスを使用すると、最高の結果が得られます。

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

良いことは、結果の画像の正確なピクセルサイズを指定できることです。密度を混乱させる必要はありません。


これは私のために働いています!-ikscapeで作成された大きなSVG
matheszabi

これは私の手書きsvgを正しくレンダリングした唯一の方法です
グリフィン14

Convertは、SVGから適切なPNGファイルを生成しません。Inkscapeを使用することは、これまでに見つけた最良の方法です。
ol_v_er

これでうまくいきますが、非常にぼやけたファイルが作成されます。
マルチン

3
ファイルを見つけるのに問題があったので、次のように実行しますinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
Andrei

16

OK、Google Chromeをお持ちの場合、Macで簡単に実行できます。

1つの文svgで、Webページ内の画像(htmlファイル内にある必要があります)を確認し、画像を右クリックして[画像のコピー]を選択し、プレビューアプリに貼り付けます。

手順:

  1. svgたとえば、ファイルをダウンロードするか、ハードドライブに保存します。somefile.svg
  2. 次に、同じフォルダーで、tmp.html次の行を含むhtmlファイルを作成します。<img src="somefile.svg">
  3. 次に、Google Chromeでそのhtmlファイルを開きます
  4. 画像が表示されます。画像を右クリックして、「画像をコピー」を選択します
  5. Macのプレビューアプリに移動し、選択します。 "File -> New from Clipboard"
  6. これ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">

スクリーンショットを作成するのに十分な画像が画面に表示されます。たとえば、Mac を使用しCmdShift4たりCmdShift3、Macで使用したりできます。Chromeウィンドウのサイズを画面で許可されている最大サイズに変更してください。


スマートなソリューション!
マヌー

1
これは、ブラウザとまったく同じようにレンダリングされるため、実際に私にとって最良の結果が得られます。
ジェイソンハスラム

結果として得られる画像の解像度は非常に低かった
Michael

独創的:)しかし、非常に大きなSVGの場合、結果の画像の解像度は@Michaelが述べたように低すぎます。
ウォルディリアス

5

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

mogrify -format png *.svg

その場でサイズを変更するオプションなどもあります。


3
mogrifyImageMagickのパーでもあります。
シュリーバツァー

うまく動作しますが、非常に遅くなります。
ミーコヒ14年

-1?誰かがこれは役に立たないと思いますか?エラーは何ですか?
DefenestrationDay 14

2
私は投票しませんでしたが、注目に値するのは、ImageMagickがsvgをサイズ変更前に任意のサイズのラスターイメージに愚かに変換し、結果としてぼやけた出力になることです。
大田

4

Apache Batikを試してください。

java -jar batik-rasterizer.jar FILES

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


4

このためにnode / npmを使用してsvgexportを作成しました。これはクロスプラットフォームであり、次のように簡単にすることができます。

svgexport input.svg output.png

これは、最も使いやすく覚えやすいものでした。また、私の場合に正しい結果を生成した唯一のもの。
マルコグレシャク

結果として得られる解像度は私にはあまり良くありませんでした。
マイケル

3

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

ダウンロードしたら、phantomjs(バイナリ)とexamplesフォルダーのrasterizer.jsファイルが必要です。

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

1
参考のため、これはでインストールできますbrew cask install phantomjs。私のインストールでは、examplesフォルダーはパスにありました/usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/
ウォルディリアス

2

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

brew install imagemagick --with-librsvg

次に、次のコマンドを実行します。

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

それが役に立てば幸い。


1

Linuxでこのコマンドを使用します。それもあなたのために働くはずです。

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

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


2
密度があっても、変換はベクトル画像ほど鮮明な画像を生成しません。代わりにApache Batikを試してください。
ベラン

1

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

0

前にコメントしたように、ImageMagickはこのトリックを行います。GraphicsMagickにポイントを追加したかっただけです。これは、ImageMagickの古いフォークであり、いくつかの改良点があります(fink経由でインストールした場合の依存関係の膨張ははるかに少なくなります)。


0

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

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

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


0

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

  1. Safariで.svgファイルを開きます。
  2. alt-command-iを押して、インスペクターを開きます。
  3. <svg>タグを右クリックして、「スクリーンショットをキャプチャ」を選択します。(画像を拡大しないでください。)

PS .svgイメージが小さすぎる場合に拡大するには、テキストエディターで.svgファイルを開いて0、メタ属性を除くすべての数値に追加してみてください。これは、(\d+)to からのグローバルな正規表現の置換によって行うことができます$10。ここ$1で、たとえば、後方参照のプレースホルダーです。


おそらくこれは太極者無極而生の答えとほぼ同じであることを言及する必要があり  ます
スコット

-1

wkhtmltoimage(プロジェクトwkhtmltopdfから)は、これをうまく変換しました:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick MacでCJK文字を空白としてレンダリングします。


このリンクは質問に回答するかもしれませんが、回答の重要な部分をここに含め、参照用のリンクを提供する方が良いでしょう。リンクされたページが変更されると、リンクのみの回答が無効になる可能性があります。- レビューから
ブラックウッド

@Blackwood素晴らしい、更新。
georgexsh
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.