如何将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 )

另请参阅

也可以在维基百科上看到栅格转换器和矢量转换器的比较。