SVGなどのベクトル形式に変換する必要があるグレースケールのビットマップがたくさんあります。私はInkscapeを使用しており、Niceの結果が得られますが、ファイルを開いて変換し、保存するのに約10〜15分かかります。これらを変換できるバッチまたはコマンドラインツールはありますか?
SOというタイトルのQ&Aでこの例を見つけました: ImageMagickを使用してJPEG画像をSVG形式に変換する方法? 。答えの1つが提案されました potrace
。
$ convert input.jpg output.ppm
$ potrace -s output.ppm -o svgout.svg
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
ニーズに合った画像を取得します。
これら2つのうち、実際にはソースマテリアルに依存します。画像を変換する場合は、おそらくpotrace
がより良いオプションです。フォントなどの非写真素材や、道路などを含む風景などの無生物の場合は、autotrace
とその--centerline
スイッチ。
写真には最適ではありませんが、ラインアートやポスターのような画像には適しています。色があまり上手ではありません。 Autotraceには、Inkscapeの埋め込みPotraceダイアログでは使用できない機能がいくつかあります。たとえば、(マップ内の)道路やフォント文字のトレースに特に役立つ中心線スイッチがあります。
これらのコマンドのいずれかをBashのforループでラップすると、一括変換タスクを簡単に実行できます。
$ for i in *.bmp; do <CONVERSION TOOL> ... "$i"; done
autotrace を試すことができます。
次のコマンドを使用すると、次の結果が得られます。
autotrace --output-format svg --output-file output.svg --color-count 4 imgsrc.jpg
結果のsvgのスクリーンキャプチャを取り、pngとして保存して出力を表示する必要がありました。
これがソース画像のjpgです:
これが結果の画像です:
通常、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
このアプローチの問題は、少なくとも私のシステムでは、画像をリンクするか埋め込むかを尋ねる迷惑なグラフィカルダイアログがポップアップすることです。
したがって、手動で[OK]をクリックする必要がありますが、ファイルごとに実行するよりもはるかに高速です。
出力画像は私が知る限り同じです:
理論的には、 convert
と rsvg-convert
の両方でこれを実行できるはずですが、数分試してみました。それでも、どちらも検討する価値があります。
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.
見る