如何将位图批量转换为SVG?


13

我有很多灰度位图需要转换为矢量格式,例如SVG。我一直在使用Inkscape,它的效果很好,但是打开,转换和保存文件大约需要10-15分钟。是否有可以将这些转换的批处理或命令行工具?


您可能还想看看potrace
斯特凡Chazelas

还可以将inkscape用作批处理工具链接

Answers:


19

钾肥

我在题为“ 如何使用ImageMagick将JPEG图像转换为SVG格式 ”的问答中找到了这个示例。建议的答案之一potrace

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

结果

           SS#1             SS#2

查看该potrace网站,您显然可以直接从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

这种方法的问题是,至少在我的系统上,它会弹出一个令人讨厌的图形对话框,询问我是否要链接或嵌入图像:

                                 在此处输入图片说明

因此,您仍然需要手动单击“确定”,但是它仍然比逐个文件快得多。

据我所知,输出图像是相同的:

   在此处输入图片说明


从理论上讲,无论是convertrsvg-convert应该能够做到这一点,但我无法得到它在几分钟内我花了试图在我的图片很好地工作。他们俩都值得研究。


我不是很肯定,但是在Inkscape网站上说它已经potrace嵌入了,所以我想知道它是否仍在使用该工具?quote:“ Potrace现在已嵌入到Inkscape中。您无需单独运行它。” - wiki.inkscape.org/wiki/index.php/Tools
SLM

5
我怀疑Inkscape只会将位图图像嵌入SVG内,因此外观相同。
user2428118 2014年

@ user2428118我怀疑您是对的。根据您要对这些图像执行的操作,这可能不是问题。
terdon

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.

看到

教程在这里!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.