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


13

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


あなたも見たいかもしれませんpotrace
ステファンシャゼル14年

batchtoolのようInkscapeのを使用することも可能であるリンク

回答:


19

ポトレース

この例は、ImageMagickを使用してJPEGイメージをSVG形式に変換する方法というタイトルのQ&AでSOで見つけました。答えの1つは示唆しましたpotrace

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

結果

           SS#1             SS#2

potraceWebサイトを見ると、明らかにBMPからSVGに直接アクセスできます。

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

オートトレース

別のオプションpotraceautotraceです。

$ 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

参照資料


JPEGから中間ファイルを保存する必要はありません。ワンライナーとして私が使用したもの:convert -channel RGB -compress None input.jpg bmp:- | potrace -s - -o output.svg
ルイマドックス

9

オートトレース

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

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

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

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

ソース画像jpgは次のとおりです。

スカルソース

結果の画像は次のとおりです。

頭蓋骨変換


7

通常、convertImageMagic を使用してすべての画像操作タスクを実行しますが、svgファイルでうまく操作することはできません。ただし、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

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

                                 ここに画像の説明を入力してください

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

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

   ここに画像の説明を入力してください


理論的には、両方convertrsvg-convertこれを行うことができるはずですが、私はそれは私がしようとして過ごした数分で自分の画像にうまく動作するように得ることができませんでした。それにもかかわらず、両方を検討する価値があります。


私は前向きではありませんが、Inkscapeのウェブサイトでは現在potrace埋め込まれていると言われていますので、とにかくそのツールを使用しているだけなのでしょうか?quote:「PotraceはInkscapeに組み込まれました。個別に実行する必要はありません。」- wiki.inkscape.org/wiki/index.php/Tools
SLM

5
InkscapeはビットマップイメージをSVG内に単に埋め込むだけなので、外観は同じだと思います。
user2428118 14年

@ user2428118あなたは正しいと思う。これらの画像を正確にどのように処理するかによって、問題になる場合とそうでない場合があります。
テルドン

1

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複数の色をサポートするpotraceに基づくトレーサーツールを使用します。まず画像をカラーレイヤーに変換し、次にそれらをトレースして結果を結合します。

トレーサーを使用するには、画像をロードまたはインポートして選択し、[ パス] > [ ビットマップのトレース]項目を選択する か、Shift+ Alt+B.

見る

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

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