如何将PNG图像转换为SVG?

如何将PNG图像转换为SVG?

有一个网站,你可以上传你的形象,并看到结果。

http://vectormagic.com/home

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

potrace不支持PNG作为input文件,但PNM 。
因此,首先从PNG convert为PNM:

 convert file.png file.pnm # PNG to PNM potrace file.pnm -s -o file.svg # PNM to SVG 

解释选项

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

input文件= 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 ) 

也可以看看

另请参阅维基百科上的光栅与vector转换器的比较 。

png是一种位图图像风格,SVG是一种基于vector的graphicsdevise,它支持位图,所以它不会像将图像转换为vector,而是将图像embedded到基于vector的格式中。 你可以使用http://www.inkscape.org/这是免费的。; 它会embedded它,但是它也有一个实时跟踪引擎,如果你愿意(使用potrace)将尝试将其转换为path。 在adobe illustrator(commericial)中查看实时跟踪就是一个例子:

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

你可能想看看potrace 。

用Adobe Illustrator:

打开Adobe Illustrator。 点击“文件”并select“打开”将.PNG文件加载到程序中。根据需要编辑图像,然后将其保存为.SVG文件。 点击“文件”并select“另存为”。 创build一个新的文件名或使用现有的名称。 确保所选的文件types是SVG。 select一个目录并点击“保存”保存文件。

要么

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

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

祝你好运

简单

  1. 下载Inkscape (完全免费)
  2. 按照这个简短的YouTubevideo中的说明

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

一个非技术性的观察:我个人比“免费”网站更喜欢这种方法,因为除了经常要求注册之外,通过上传图像,实际上是把图像给网站所有者。

令我惊讶的是, potrace事实certificate,只能处理黑色和白色。 这可能对您的使用情况很好,但有些人可能会认为缺乏颜色跟踪是有问题的。

就个人而言,我用Vector Magic取得了令人满意的成绩

尽pipe如此,这还不完美。

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

就像在Inkskape和Shift + Alt + B中select位图一样简单

基于Potrace的Inksape Trace位图工具的边缘检测

对那些使用potrace和imagemagick的人来说 ,将PNG图像转换成PPM透明效果似乎并不是很好。 这里是一个例子,使用-flatten上的-flatten标志来处理:

 sudo apt-get install potrace imagemagick convert -flatten input.png output.ppm potrace -s output.ppm -o output.svg rm output.ppm 

另一个有趣的现象是,您可以使用PPM (256 * 3种颜色,即RGB), PGM (256种颜色,即灰度)或PBM (2种颜色,即仅白色或黑色)作为input格式。 从我有限的观察中可以看出,在抗锯齿图像上, PPM和PGM (据我所知可以产生相同的SVG )缩小了彩色区域, PBM扩展了彩色区域(尽pipe只是一点点)。 推测这是pixel > (256 / 2)testing和pixel > 0testing之间的差异。 你可以通过改变文件扩展名,即。 以下使用PBM :

 sudo apt-get install potrace imagemagick convert -flatten input.png output.pbm potrace -s output.pbm -o output.svg rm output.pbm 

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

我总是用它来满足我的需求。

根据你想从.png转换为.svg的原因,你可能不需要经历麻烦。 如果您对可用工具不熟悉,或者如果您不是交易平面devise师,则从.png(光栅)转换为.svg(vector)可能会很麻烦。

如果有人给你发送一个大的,高分辨率的文件(例如1024×1024),你可以resize,几乎任何你想在GIMP的大小。 通常情况下,如果分辨率(每英寸像素数)太低,您将会遇到调整图像大小的问题。 要在GIMP中纠正这个问题,您可以:

  1. File -> Open :你的.png文件
  2. Image -> Image Properties :检查分辨率和颜色空间。 你想要一个大约300ppi的分辨率。 在大多数情况下,你想要的颜色空间是RGB。
  3. Image -> Mode :设置为RGB
  4. Image -> Scale Image :保持大小不变​​,将Y分辨率设置为300或更高。 命中比例。
  5. Image -> Scale Image :分辨率现在应该是300,你现在可以调整图像的大小,几乎任何你想要的大小。

不像调整.svg文件那​​么容易,但是如果您已经有了一个大的高分辨率的图像,那么肯定比试图将.png转换为.svg更简单快捷。

我假设你想写软件来做到这一点。 要天真地做到这一点,你只需find线条并设置vector。 要智能地做到这一点,您可以尝试将graphics放在绘图上(模型拟合)。 另外,你应该尝试确定位图区域(你不能用阴影或纹理进行build模的区域),我不推荐使用这个path,因为它需要很长时间,需要一些graphics和计算机视觉方面的知识。但是,输出会比原来的输出大得多,并且比您的原始输出要好得多。

这个工具现在工作得很好。

http://www.mobilefish.com/services/image2svg/image2svg.php

如果你在一些Linux系统上,imagemagick是完美的。 即

 convert somefile.png somefile.svg 

这与不同格式的堆一起工作。

对于其他媒体,如video和audio使用(ffmpeg), 我知道你清楚地说明了对于svg,但是; 它仍然是媒体相关的。

 ffmpeg -i somefile.mp3 somefile.ogg 

只是一个小费,如果你想通过大量的文件; 一个使用基本shell技巧的循环

 for f in *.jpg; do convert $f ${f%jpg}png; done 

这删除了JPG,并添加了告诉转换你想要的PNG。