如何将PNG图像转换为SVG?
答案 0 :(得分:130)
答案 1 :(得分:122)
potrace
将not support PNG作为输入文件,但是PNM
因此,从PNG到PNM的第一个convert
:
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
convert 2017.png 2017.pnm
临时文件= 2017.pnm
potrace 2017.pnm -s -o 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 )
另请参阅维基百科上的this good comparison of raster to vector converters。
答案 2 :(得分:59)
png是位图图像样式,SVG是基于矢量的图形设计,它支持位图,因此它不像将图像转换为矢量,只是嵌入基于矢量格式的图像。你可以使用免费的http://www.inkscape.org/来做到这一点。它会嵌入它,但是它也有一个类似引擎的实时跟踪,如果你愿意,它会尝试将它转换为路径(使用potrace)。请参阅adobe illustrator(commericial)中的实时跟踪示例:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
答案 3 :(得分:28)
您可能需要查看potrace。
答案 4 :(得分:18)
易
正如你所看到的,如果你想要做很多其他聪明的.svg东西,你也可以使用Inkscape来做。
非技术观察:我个人更喜欢这种方法而不是#34; free"网站产品,因为除了经常要求注册之外,通过上传图像,在所有实际条件下,一个是将图像提供给网站所有者。
答案 5 :(得分:15)
adobe illustrator:
打开Adobe Illustrator。单击“文件”并选择“打开”以将.PNG文件加载到程序中。根据需要编辑图像,然后将其另存为.SVG文件。单击“文件”,然后选择“另存为”。创建新文件名或使用现有名称。确保所选文件类型为SVG。选择一个目录,然后单击“保存”以保存文件。
或
在线转换器 http://image.online-convert.com/convert-to-svg
我更喜欢AI,因为您可以进行任何更改
祝你好运答案 6 :(得分:10)
令我惊讶的是,事实证明 potrace ,只能处理黑白。对于你的用例来说这可能没问题,但是有些人可能会认为缺少颜色跟踪是有问题的。
就个人而言,我的成绩令人满意 Vector Magic
仍然不完美。
答案 7 :(得分:9)
使用potrace和imagemagick向使用透明度转换为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
另一个有趣的现象是你可以使用PPM(256 * 3颜色,即RGB),PGM(256色,即灰度)或PBM(2种颜色,即。仅白色或黑色)作为输入格式。从我有限的观察结果来看,似乎在抗锯齿的图像PPM和PGM(据我所见,它产生相同的SVGs)缩小了彩色区域{ {3}}扩大了彩色区域(虽然只是一点点)。据推测,这是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
答案 8 :(得分:7)
您还可以尝试http://image.online-convert.com/convert-to-svg
我总是把它用于我的需要。
答案 9 :(得分:7)
我刚发现这个问题和答案,因为我正在尝试做同样的事情!我不想使用提到的其他一些工具。 (不想放弃我的电子邮件,也不想付钱)。我发现Inkscape(v0.91)可以做得很好。这个tutorial快速且易于理解。
就像在Inkskape中选择位图和 Shift + Alt + B一样简单。
答案 10 :(得分:4)
根据为什么您要将.png转换为.svg,您可能不必经历麻烦。如果您不熟悉可用的工具,或者如果您不是贸易中的平面设计师,则从.png(光栅)转换为.svg(矢量)会很麻烦。
如果有人向您发送大型高分辨率文件(例如1024x1024),您可以将其调整为GIMP中您想要的任何大小。通常,如果分辨率(每英寸像素数)太低,您将无法调整图像大小。要在GIMP中纠正此问题,您可以:
File -> Open
:您的.png文件Image -> Image Properties
:检查分辨率和色彩空间。你想要一个大约300 ppi的分辨率。在大多数情况下,您希望颜色空间为RGB。Image -> Mode
:设置为RGB Image -> Scale Image
:仅保留大小,设置和Y分辨率为300或更高。命中比例。Image -> Scale Image
:分辨率现在应为300,您现在可以将图像调整到任意大小。不像调整.svg文件那么容易,但是如果你已经拥有一个大的高分辨率图像,那么比尝试将.png转换为.svg更简单快捷。
答案 11 :(得分:2)
我假设您希望编写软件来执行此操作。要天真地做,你只需找到行并设置向量。为了智能地执行此操作,您尝试将形状拟合到图形上(模型拟合)。此外,您应该尝试确定位图区域(您无法通过阴影或应用纹理建模的区域。我不建议使用此路线,因为它需要相当多的时间并需要一些图形和计算机视觉知识。但是,输出将比原始输出更好,并且扩展得更好。
答案 12 :(得分:2)
答案 13 :(得分:0)
答案 14 :(得分:-1)
如果您使用的是某些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,告诉转换你想要的内容。