如何将PNG图像转换为SVG?
当前回答
Easy
下载Inkscape(完全免费) 按照youtube上这段简短视频的说明去做
正如你将看到的,如果你想做很多其他聪明的。svg的东西,你也可以使用Inkscape。
一个非技术观察:我个人更喜欢这种方法,而不是“免费”网站提供的服务,因为除了通常需要注册之外,通过上传图像,在所有实际条件下,一个人是把图像交给网站所有者。
其他回答
你可能想看看potrace。
http://online-converting.com/image/convert-to-svg/可以很好地转换为SVG
Easy
下载Inkscape(完全免费) 按照youtube上这段简短视频的说明去做
正如你将看到的,如果你想做很多其他聪明的。svg的东西,你也可以使用Inkscape。
一个非技术观察:我个人更喜欢这种方法,而不是“免费”网站提供的服务,因为除了通常需要注册之外,通过上传图像,在所有实际条件下,一个人是把图像交给网站所有者。
png是位图图像风格,SVG是支持位图的基于矢量的图形设计,因此它不会将图像转换为矢量,只是将图像嵌入到基于矢量的格式中。你可以使用免费的http://www.inkscape.org/来实现。它会嵌入它,但是它也有一个Live Trace之类的引擎,如果你愿意,它会尝试将它转换为路径(使用potrace)。查看adobe illustrator中的实时跟踪(商业)是一个例子:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
potrace不支持PNG作为输入文件,而是支持PNM。 因此,首先将PNG转换为PNM:
convert file.png file.pnm # PNG to PNM
potrace file.pnm -s -o file.svg # PNM to SVG
解释选项
potrace -s =>输出文件是SVG potrace -o file.svg =>将输出写入file.svg
例子
输入文件= 2017.png
convert 2017.png 2017.pnm
临时文件= 2017.pnm
potrace 2017.pnm -s -o 2017.svg
输出文件= 2017.svg
脚本
ykarikos提出了一个脚本png2svg.sh,我已经改进了:
#!/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 )
另请参阅
也可以在维基百科上看到栅格转换器和矢量转换器的比较。