如何将PNG图像转换为SVG?
如何将PNG图像转换为SVG?
Answers:
potrace
不支持PNG作为输入文件,但支持PNM。
因此,首先convert
从PNG到PNM:
convert file.png file.pnm # PNG to PNM
potrace file.pnm -s -o file.svg # PNM to SVG
potrace -s
=>输出文件为S VGpotrace -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 )
另请参见Wikipedia 上栅格与矢量转换器的良好比较。
potrace
黑白图标。感谢您的反馈意见。但是对不起,不知道如何保存颜色……Ho!我有一个主意:如果您的原始图像只有很少的颜色(例如三种独特的颜色),则可以创建三幅初始图像(每种颜色一个)。然后转换为SVG。最后,将三个SVG内容合并到一个文件中(SVG基于XML)。希望这可以帮助...干杯;-)
convert
和potrace
在许多平台上都可用。我正在使用基于Linux的计算机。我昨天刚刚使用这些命令从扫描的纸张生成SVG。您可以看到结果:cpp-frug.github.io/images/Cpp-President-2017.svg请解释有关目标的更多信息。您要/想知道什么?您有什么需要/愿望?干杯;-)
png是位图图像样式,而SVG是基于矢量的图形设计,支持位图,因此就好像它不会将图像转换为矢量一样,只是嵌入了基于矢量格式的图像。您可以使用http://www.inkscape.org/免费的。它会嵌入它,但是它也有一个像Live Trace这样的引擎,如果您愿意的话,它将尝试将其转换为路径(使用Potrace)。请参见Adobe Illustrator的实时跟踪(商业)示例:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
简单
如您所见,如果您想做很多其他的.svg聪明的事情,您也可以使用Inkscape来做。
一个非技术性的观察:我个人更喜欢这种方法而不是“免费”网站产品,因为除了经常需要注册之外,通过上传图片,实际上是将图片提供给网站所有者。
使用Adobe illustrator:
打开Adobe Illustrator。单击“文件”,然后选择“打开”以将.PNG文件加载到程序中。根据需要编辑图像,然后将其另存为.SVG文件。单击“文件”,然后选择“另存为”。创建一个新的文件名或使用现有的名称。确保所选文件类型为SVG。选择一个目录,然后单击“保存”以保存文件。
要么
在线转换器 http://image.online-convert.com/convert-to-svg
我更喜欢AI,因为您可以进行任何必要的更改
祝好运
给那些使用potrace和imagemagick的人的注释,将具有透明性的PNG图像转换为PPM似乎效果不佳。以下是使用-flatten
标记on 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(据我所知产生的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
您也可以尝试http://image.online-convert.com/convert-to-svg
我总是根据需要使用它。
根据您为什么要从.png转换为.svg的原因,您可能不必经历麻烦。如果您对可用的工具不是很熟悉,或者您不是行业的图形设计师,那么从.png(光栅)转换为.svg(矢量)可能会很麻烦。
如果有人向您发送了一个高分辨率的大文件(例如1024x1024),则您可以将其调整为几乎在GIMP中所需的任何大小。通常,如果分辨率(每英寸的像素数)太低,则在调整图像大小时会遇到问题。要在GIMP中纠正此问题,您可以:
File -> Open
:您的.png文件Image -> Image Properties
:检查分辨率和色彩空间。您想要约300 ppi的分辨率。在大多数情况下,您希望颜色空间为RGB。Image -> Mode
:设置为RGBImage -> Scale Image
:不理会尺寸,将Y分辨率设置为300或更大。命中规模。Image -> Scale Image
:分辨率现在应该为300,现在您可以将图像调整为几乎所需的大小。不像调整.svg文件的大小那么容易,但是,如果您已经有一个高分辨率的大图像,则绝对比尝试将.png转换为.svg更加容易和快捷。
potrace
在命令行上使用相同的问题-让我想知道网站内部使用了什么...
如果您在某些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,以告诉convert您想要什么。