如何将PNG图像转换为SVG?
如何将PNG图像转换为SVG?
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,因为你可以做任何需要的改变
祝你好运
简单
- 下载Inkscape (完全免费)
- 按照这个简短的YouTubevideo中的说明
正如你所看到的,如果你想做很多其他聪明的.svg的东西,你也可以用Inkscape来做。
一个非技术性的观察:我个人比“免费”网站更喜欢这种方法,因为除了经常要求注册之外,通过上传图像,实际上是把图像给网站所有者。
令我惊讶的是, potrace事实certificate,只能处理黑色和白色。 这可能对您的使用情况很好,但有些人可能会认为缺乏颜色跟踪是有问题的。
就个人而言,我用Vector Magic取得了令人满意的成绩
尽pipe如此,这还不完美。
我刚刚发现这个问题和答案,因为我正在尝试做同样的事情! 我不想使用其他一些提到的工具。 (不想给我的电子邮件,而不想支付)。 我发现Inkscape(v0.91)可以做得很好。 本教程快速且易于理解。
就像在Inkskape和Shift + Alt + B中select位图一样简单。
对那些使用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 > 0
testing之间的差异。 你可以通过改变文件扩展名,即。 以下使用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中纠正这个问题,您可以:
-
File -> Open
:你的.png文件 -
Image -> Image Properties
:检查分辨率和颜色空间。 你想要一个大约300ppi的分辨率。 在大多数情况下,你想要的颜色空间是RGB。 -
Image -> Mode
:设置为RGB -
Image -> Scale Image
:保持大小不变,将Y分辨率设置为300或更高。 命中比例。 -
Image -> Scale Image
:分辨率现在应该是300,你现在可以调整图像的大小,几乎任何你想要的大小。
不像调整.svg文件那么容易,但是如果您已经有了一个大的高分辨率的图像,那么肯定比试图将.png转换为.svg更简单快捷。
我假设你想写软件来做到这一点。 要天真地做到这一点,你只需find线条并设置vector。 要智能地做到这一点,您可以尝试将graphics放在绘图上(模型拟合)。 另外,你应该尝试确定位图区域(你不能用阴影或纹理进行build模的区域),我不推荐使用这个path,因为它需要很长时间,需要一些graphics和计算机视觉方面的知识。但是,输出会比原来的输出大得多,并且比您的原始输出要好得多。
如果你在一些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。