如何将PNG图像转换为SVG?
png是位图图像风格,SVG是支持位图的基于矢量的图形设计,因此它不会将图像转换为矢量,只是将图像嵌入到基于矢量的格式中。你可以使用免费的http://www.inkscape.org/来实现。它会嵌入它,但是它也有一个Live Trace之类的引擎,如果你愿意,它会尝试将它转换为路径(使用potrace)。查看adobe illustrator中的实时跟踪(商业)是一个例子:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
I'm assuming that you wish to write software to do this. To do it naively you would just find lines and set the vectors. To do it intelligently, you attempt to fit shapes onto the drawing (model fitting). Additionally, you should attempt to ascertain bitmaped regions (regions you can't model through shames or applying textures. I would not recommend going this route as that it will take quite a bit of time and require a bit of graphics and computer vision knowledge. However, the output will much and scale much better than your original output.
有一个网站,你可以上传你的图片,并看到结果。
http://vectormagic.com/home
但是如果你想下载你的svg-image,你需要注册。 (注册即可免费获得2张图片)
如果你使用的是Linux系统,imagemagick是完美的。即
convert somefile.png somefile.svg
这适用于大量不同的格式。
用于其他媒体,如视频和音频使用(ffmpeg) 我知道你清楚地说明png到svg,然而;这仍然与媒体有关。
ffmpeg -i somefile.mp3 somefile.ogg
如果你想浏览大量的文件,这是一个小技巧;一个循环使用基本的shell技巧。
for f in *.jpg; do convert $f ${f%jpg}png; done
这将删除jpg并添加png,这告诉转换你想要的。
令我惊讶的是,potrace原来只能处理黑色和白色。对于您的用例来说,这可能没问题,但有些人可能会认为缺乏颜色追踪是有问题的。
就我个人而言,我对 向量的魔法
但它仍然不完美。
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 )
另请参阅
也可以在维基百科上看到栅格转换器和矢量转换器的比较。
用adobe illustrator:
打开Adobe Illustrator。点击“文件”,选择“打开”,将. png文件加载到程序中。在将图像保存为. svg文件之前,根据需要编辑图像。点击“文件”并选择“另存为”。创建新文件名或使用现有名称。确保选择的文件类型是SVG。选择一个目录,点击“保存”保存文件。
or
在线转换器 http://image.online-convert.com/convert-to-svg
我更喜欢人工智能,因为你可以做出任何需要的改变
祝你好运
这取决于您为什么要从.png转换为.svg,您可能不必经历这个麻烦。如果你不是很熟悉可用的工具,或者你不是一个专业的图形设计师,那么从。png(光栅)转换到。svg(矢量)可能会很痛苦。
如果有人向您发送了一个大的、高分辨率的文件(例如1024x1024),您可以在GIMP中将其大小调整为几乎您想要的任何大小。通常情况下,如果分辨率(每英寸像素数)太低,就会出现调整图像大小的问题。要在GIMP中纠正这个问题,您可以:
File ->打开:您的。png文件 图像->图像属性:检查分辨率和颜色空间。你需要300 ppi左右的分辨率。在大多数情况下,你希望颜色空间是RGB。 Image ->模式:设置为RGB 图像->比例图像:保持大小不变,设置和Y分辨率为300或更高。达到规模。 图像->缩放图像:分辨率现在应该是300,你现在可以调整图像到几乎任何你想要的大小。
虽然不像调整.svg文件那么简单,但如果你已经有了一个大的、高分辨率的图像,那么肯定比尝试将.png转换为.svg更容易、更快。
注意那些使用potrace和imagemagick的人,将透明的PNG图像转换为PPM似乎不是很好。下面是一个在convert上使用-flatten标志来处理这个问题的例子:
sudo apt-get install potrace imagemagick
convert -flatten input.png output.ppm
potrace -s output.ppm -o output.svg
rm output.ppm
Another interesting phenomenon is that you can use PPM (256*3 colors, ie. RGB), PGM (256 colors, ie. grayscale) or PBM (2 colors, ie. white or black only) as the input format. From my limited observations, it would appear that on images which are anti-aliased, PPM and PGM (which produce identical SVGs as far as I can see) shrink the colored area and PBM expands the colored area (albeit only a little). Presumably this is the difference between a pixel > (256 / 2) test and a pixel > 0 test. You can switch between the three by changing the file extension, ie. the following use PBM:
sudo apt-get install potrace imagemagick
convert -flatten input.png output.pbm
potrace -s output.pbm -o output.svg
rm output.pbm
Easy
下载Inkscape(完全免费) 按照youtube上这段简短视频的说明去做
正如你将看到的,如果你想做很多其他聪明的。svg的东西,你也可以使用Inkscape。
一个非技术观察:我个人更喜欢这种方法,而不是“免费”网站提供的服务,因为除了通常需要注册之外,通过上传图像,在所有实际条件下,一个人是把图像交给网站所有者。
我刚刚发现这个问题和答案,因为我正试图做同样的事情!我不想使用其他提到的工具。(不想把我的电子邮件给别人,也不想付钱)。我发现Inkscape (v0.91)可以做得很好。本教程简单易懂。
它很简单,选择你的位图在Inkskape和Shift+Alt+B。