如何将PNG图像转换为SVG?
potrace
不[支持PNG][N]作为输入文件,但[PNM][A].<br>。
因此,先将PNG[convert
][C]转换为PNM。
convert file.png file.pnm # PNG to PNM
potrace file.pnm -s -o file.svg # PNM to SVG
potrace -s
=>
输出文件为SVGpotrace -o file.svg
=>
将输出写到file.svg
。输入文件=2017.png
[![输入文件][png]][png]
convert 2017.png 2017.pnm
临时文件=2017.pnm
potrace 2017.pnm -s -o 2017.svg
脚本
ykarikos][Y]提出了一个脚本[png2svg.sh][S],我对这个脚本进行了改进。
#!/bin/bash
File_png="${1?:Usage: $0 file.png}"
if [[ ! -s "$File_png" ]]; then
echo >&2 "The first argument ($File_png)"
echo >&2 "must be a file having a size greater than zero"
( set -x ; ls -s "$File_png" )
exit 1
fi
File="${File_png%.*}"
convert "$File_png" "$File.pnm" # PNG to PNM
potrace "$File.pnm" -s -o "$File.svg" # PNM to SVG
rm "$File.pnm" # Remove PNM
如果您想转换多个文件,也可以使用以下单行命令。
( set -x ; for f_png in *.png ; do f="${f_png%.png}" ; convert "$f_png" "$f.pnm" && potrace "$f.pnm" -s -o "$f.svg" ; done )
另见
另见维基百科上的[光栅与矢量转换器的良好比较][W]。
P:
[N]: http://potrace.sourceforge.net/faq.html#formats [C]: http://www.imagemagick.org/script/convert.php [A]: http://en.wikipedia.org/wiki/Portable_anymap [Y]: https://gist.github.com/ykarikos [S]: https://gist.github.com/ykarikos/2892009 [W]: http://en.wikipedia.org/wiki/Comparison_of_raster_to_vector_conversion_software [png]: http://i.stack.imgur.com/bfFNs.png svg:
png是一种位图图像样式,而SVG是一种基于矢量的图形设计,它支持位图,所以它并不像将图像转换成矢量,只是将图像嵌入基于矢量的格式中。 你可以用http://www.inkscape.org/,这是免费的。 它可以嵌入图像,但是它也有一个类似于实时跟踪的引擎,如果你愿意,它可以尝试将图像转换成路径(使用potrace)。请看adobe illustrator (commericial)中的实时跟踪就是一个例子。
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
与adobe illustrator。
打开Adobe Illustrator。 点击"文件"。 并选择"打开" 将.PNG文件加载到程序中。在将其保存为.SVG文件之前,根据需要编辑图像。 点击"文件"。 并选择"另存为."。 创建一个新的文件名或使用现有的名称。 确保选择的文件类型是SVG。 选择一个目录,然后单击"保存"。 来保存文件。
或
在线转换器 http://image.online-convert.com/convert-to-svg
我更喜欢人工智能,因为你可以做出任何需要的改变。
好运气
给使用potrace和imagemagick的朋友们提个醒,将PNG带有透明度的图像转换为PPM似乎不是很好用。 下面是一个使用 "convert "上的 "flatten "标志来处理这个问题的例子。
sudo apt-get install potrace imagemagick
convert -flatten input.png output.ppm
potrace -s output.ppm -o output.svg
rm output.ppm
另一个有趣的现象是,你可以使用[PPM][1](256*3色,即RGB)、[PGM][1](256色,即RGB)。
RGB)、[PGM][1](256色,即灰度)或[PBM][1](2色,即。
灰度)或[PBM][1](2色,即白色或黑色)作为输入格式。
白色或黑色)作为输入格式。
根据我有限的观察,在反锯齿的图像上,[PPM][1]和[PGM][1](就我所见,它们产生的[SVG][2]是相同的)缩小了彩色区域,而[PBM][1]扩大了彩色区域(尽管只有一点点)。
这大概就是 "像素>
(256 / 2)测试和
pixel >
0`测试。
你可以通过改变文件的扩展名在这三者之间切换,即。
下面使用[PBM][1]。
sudo apt-get install potrace imagemagick
convert -flatten input.png output.pbm
potrace -s output.pbm -o output.svg
rm output.pbm
[1]: http://en.wikipedia.org/wiki/Netpbm_format [2]: http://en.wikipedia.org/wiki/Scalable_Vector_Graphics
我刚刚找到这个问题和答案,因为我正试图做同样的事情!我不想使用其他一些工具提到的。 我不想使用其他一些提到的工具。 (不要'不想把我的电子邮件给别人,也不要'不想付钱)。 我发现Inkscape(v0.91)可以做得很好。 这个[教程][1]很快,很容易理解。
就像在Inkskape中选择你的位图,然后**Shift+Alt+B一样简单。
基于potrace的Inksape Trace位图工具的边缘检测][2] 。
[1]: https://inkscape.org/en/doc/tracing/tutorial-tracing.html [2]: http://i.stack.imgur.com/lJD7w.png
根据你想从.png转换到.svg的*原因,你可能不需要经历这个麻烦。 如果你不是很熟悉可用的工具,或者你不是一个图形设计师,从.png(光栅)转换到.svg(矢量)可能是一个痛苦。
如果有人给你发来一个大的高分辨率文件(例如:1024x1024),你可以将其转换为矢量文件。 1024x1024),你可以在GIMP中把它调整到几乎任何你想要的大小。 通常情况下,如果分辨率(每英寸像素数)太低,你在调整图像大小时就会出现问题。 要在GIMP中纠正这个问题,你可以。
1.File -> Open
:你的.png文件。
2.
Image -> 图像属性
。
检查分辨率和色彩空间。
你希望分辨率在300 ppi左右。
在大多数情况下,你希望色彩空间是RGB。
3.Image -> Mode
:设置为RGB。
4.
Image -> 缩放图像
。
大小就不说了,设置和Y分辨率为300以上。
点击缩放。
5.
Image -> 缩放图像
。
现在分辨率应该是300,你现在可以把图像调整到任何你想要的大小。
不像调整.svg文件的大小那么容易,但绝对比试图将.png转换为.svg更容易和更快,如果你已经有一个大的,高分辨率的图像。
如果你在一些Linux系统上,imagemagick是完美的。 例如
convert somefile.png somefile.svg
这适用于大量的不同格式。
对于其他媒体,如视频和音频,使用(ffmpeg) _我知道你明确表示png转svg,但是。 这还是和媒体有关。
ffmpeg -i somefile.mp3 somefile.ogg
如果你想通过大量的文件,只是一个提示。 循环使用基本的shell技巧...
for f in *.jpg; do convert $f ${f%jpg}png; done
这就去掉了JPG,增加了PNG,这就告诉了转换你想要的东西。