web-dev-qa-db-ja.com

ビットマップをSVGにバッチ変換する方法は?

SVGなどのベクトル形式に変換する必要があるグレースケールのビットマップがたくさんあります。私はInkscapeを使用しており、Niceの結果が得られますが、ファイルを開いて変換し、保存するのに約10〜15分かかります。これらを変換できるバッチまたはコマンドラインツールはありますか?

13
Village

potrace

SOというタイトルのQ&Aでこの例を見つけました: ImageMagickを使用してJPEG画像をSVG形式に変換する方法? 。答えの1つが提案されました potrace

$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg

結果

ss #1ss #2

potrace Webサイトを見ると、BMPからSVGに直接移動できるようです。

$ potrace -s input.bmp -o output.svg

自動トレース

potraceのもう1つのオプションは autotrace です。

$ autotrace -output-file ouput.svg -output-format svg --color-count 4 input.bmp

おそらく--color-countニーズに合った画像を取得します。

結果

ss #3

どちらを使用しますか?

これら2つのうち、実際にはソースマテリアルに依存します。画像を変換する場合は、おそらくpotraceがより良いオプションです。フォントなどの非写真素材や、道路などを含む風景などの無生物の場合は、autotraceとその--centerlineスイッチ。

写真には最適ではありませんが、ラインアートやポスターのような画像には適しています。色があまり上手ではありません。 Autotraceには、Inkscapeの埋め込みPotraceダイアログでは使用できない機能がいくつかあります。たとえば、(マップ内の)道路やフォント文字のトレースに特に役立つ中心線スイッチがあります。

バッチ変換

これらのコマンドのいずれかをBashのforループでラップすると、一括変換タスクを簡単に実行できます。

$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done

参考文献

19
slm

自動トレース

autotrace を試すことができます。

次のコマンドを使用すると、次の結果が得られます。

autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg

結果のsvgのスクリーンキャプチャを取り、pngとして保存して出力を表示する必要がありました。

これがソース画像のjpgです:

skull source

これが結果の画像です:

skull convert

9
rking

通常、ImageMagicのconvertを使用してすべての画像操作タスクを実行しますが、svgファイルでNiceを再生することはできません。ただし、コマンドラインからinkscape自体を使用できます。

for i in *bmp; do inkscape -f "$i" -l "$i.svg"; done

これにより、foo.bmp.svgというファイルが作成されます。名前を正しくするために、これを試してください:

for i in *bmp; do inkscape -f "$i" -l "${i%.bmp}.svg"; done

このアプローチの問題は、少なくとも私のシステムでは、画像をリンクするか埋め込むかを尋ねる迷惑なグラフィカルダイアログがポップアップすることです。

enter image description here

したがって、手動で[OK]をクリックする必要がありますが、ファイルごとに実行するよりもはるかに高速です。

出力画像は私が知る限り同じです:

 enter image description here


理論的には、 convertrsvg-convert の両方でこれを実行できるはずですが、数分試してみました。それでも、どちらも検討する価値があります。

7
terdon

potraceはそのためのツールです。それらを一括で処理できますが、最初に画像をモノクロに変換する必要があります。

ls ./*.jpg | xargs -L1 -I {}  convert -monochrome {} {}.ppm
ls -1 ./*.ppm | xargs -L1 -I {} potrace {} -r 300 -b svg -o {}.svg

Ubuntuにインストール:

Sudo apt install potrace

モノクロではない画像を変換したい場合、Inkscapeには複数の色をサポートするトレーサーツールベースのトレーサがあり、最初に画像をカラーレイヤーに変換してから、それらをトレースして結果を結合します。

トレーサーを使用するには、画像をロードまたはインポートして画像を選択し、Path>Trace Bitmapアイテム、または Shift+Alt+B.

見る

チュートリアルはこちら!

1