如何将PNG图像转换为SVG?

use*_*337 266 svg png

如何将PNG图像转换为SVG?

小智 130

有一个网站,您可以上传图像,并查看结果.

http://vectormagic.com/home

但是如果你想下载你的svg-image,你需要注册.(如果您注册,您将免费获得2张图片)


oli*_*bre 122

potrace支持PNG作为输入文件,但支持PNM.
因此,首先convert从PNG到PNM:

convert file.png file.pnm        # PNG to PNM
potrace file.pnm -s -o file.svg  # PNM to SVG
Run Code Online (Sandbox Code Playgroud)

解释选项

  • potrace -s=>输出文件是S VG
  • potrace -o file.svg =>写输出到 file.svg

输入文件= 2017.png 输入文件

convert 2017.png 2017.pnm
Run Code Online (Sandbox Code Playgroud)

临时文件= 2017.pnm

potrace 2017.pnm -s -o 2017.svg
Run Code Online (Sandbox Code Playgroud)

输出文件= 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
Run Code Online (Sandbox Code Playgroud)

单行命令

如果要转换许多文件,还可以使用以下单行命令:

( 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 )
Run Code Online (Sandbox Code Playgroud)

也可以看看

另请参阅维基百科上光栅到矢量转换器的这种良好比较.

  • 当使用potrace从pnm转换为svg时,图像会失去颜色.有没有办法保持颜色? (2认同)

Kei*_*ler 59

png是位图图像样式,SVG是基于矢量的图形设计,它支持位图,因此它不像将图像转换为矢量,只是嵌入基于矢量格式的图像.你可以使用免费的http://www.inkscape.org/来做到这一点.它会嵌入它,但是它也有一个类似引擎的实时跟踪,如果你愿意,可以尝试将它转换为路径(使用potrace).请参阅adobe illustrator(commericial)中的实时跟踪示例:

http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm

  • 以下是如何在Inkscape中执行此操作的说明:http://wiki.inkscape.org/wiki/index.php/Potrace (12认同)

Mic*_*ker 28

你可能想看看potrace.


Pan*_*cho 18

简单

  1. 下载Inkscape(它是完全免费的)
  2. 按照此简短YouTube视频中的说明操作

正如你所看到的,如果你想做很多其他聪明的.svg东西,你也可以使用Inkscape.

非技术观察:我个人更喜欢这种方法而不是"免费"网站产品,因为除了经常需要注册外,通过上传图像,在所有实际条件中,一个是将图像提供给网站所有者.

  • 遵循这些说明仅使用SVG XML包装图像 - 它不会将任何内容转换为路径数据. (5认同)

Jay*_*ayD 15

与adobe illustrator:

打开Adobe Illustrator.单击"文件"并选择"打开"以将.PNG文件加载到程序中.根据需要编辑图像,然后将其另存为.SVG文件.单击"文件",然后选择"另存为".创建新文件名或使用现有名称.确保所选文件类型为SVG.选择一个目录,然后单击"保存"以保存文件.

要么

在线转换器 http://image.online-convert.com/convert-to-svg

我更喜欢AI,因为你可以做任何改变

祝好运

  • 为online-convert.com +1.现在尝试了几个单色剪影..表现完美..也似乎是完全免费的. (3认同)

cav*_*ade 10

令我惊讶的是,potrace事实证明,只能处理黑白.对于您的用例可能没问题,但有些人可能会认为缺少颜色跟踪是有问题的.

就个人而言,我在Vector Magic中取得了令人满意的结果

它仍然不完美.


Bar*_*row 9

给那些使用potraceimagemagick,将PNG图像透明化转换为PPM的注释似乎不太好用.这是一个使用-flatten标志convert来处理这个的例子:

sudo apt-get install potrace imagemagick
convert -flatten input.png output.ppm
potrace -s output.ppm -o output.svg
rm output.ppm
Run Code Online (Sandbox Code Playgroud)

另一个有趣的现象是您可以使用PPM(256*3颜色,即RGB),PGM(256色,即灰度)或PBM(2种颜色,即白色或黑色)作为输入格式.根据我的有限观察,似乎在抗锯齿的图像上,PPMPGM(据我所见,它产生相同的SVG)缩小了有色区域,PBM扩展了有色区域(尽管只是一点点).据推测,这是pixel > (256 / 2)测试和pixel > 0测试之间的差异.您可以通过更改文件扩展名来切换三者,即.以下使用PBM:

sudo apt-get install potrace imagemagick
convert -flatten input.png output.pbm
potrace -s output.pbm -o output.svg
rm output.pbm
Run Code Online (Sandbox Code Playgroud)


the*_*dnp 7

您也可以尝试http://image.online-convert.com/convert-to-svg

我总是把它用于我的需要.


Dai*_*Bok 7

我刚发现这个问题和答案,因为我正在尝试做同样的事情!我不想使用提到的其他一些工具.(不想放弃我的电子邮件,也不想付钱).我发现Inkscape(v0.91)可以做得很好.本教程快速且易于理解.

它就像在Inkskape和Shift + Alt + B中选择位图一样简单.

使用基于potrace的Inksape Trace位图工具进行边缘检测