如何将PNG图像转换为SVG?

如何将PNG图像转换为SVG?

564429 次浏览

你可能想看看potrace

png是位图图像风格,SVG是支持位图的基于矢量的图形设计,因此它不会将图像转换为矢量,只是将图像嵌入到基于矢量的格式中。你可以使用免费的http://www.inkscape.org/来做到这一点。它会嵌入它,但是它也有一个Live Trace之类的引擎,如果你愿意,它会尝试将它转换为路径(使用potrace)。查看adobe illustrator中的实时跟踪(商业)是一个例子:

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

我假设您希望编写这样的软件。简单来说,你只需要找到直线,然后设置向量。要聪明地做到这一点,您可以尝试将形状贴合到绘图上(模型拟合)。此外,你应该尝试确定位图区域(你不能通过羞耻或应用纹理建模的区域)。我不建议走这条路,因为这将花费相当多的时间,需要一些图形和计算机视觉知识。然而,输出将比原始输出更好。

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

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原来只能处理黑色和白色。对于您的用例来说,这可能没问题,但有些人可能会认为缺乏颜色追踪是有问题的。

就我个人而言,我对 向量的魔法 < / p >

但它仍然不完美。

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 =>输出文件为年代VG
  • 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。选择一个目录,点击“保存”保存文件。

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

我更喜欢人工智能,因为你可以做出任何需要的改变

祝你好运

取决于你想要从.png转换到.svg的为什么,你可能不必经历这个麻烦。如果你不是很熟悉可用的工具,或者你不是一个专业的图形设计师,那么从。png(光栅)转换到。svg(矢量)可能会很痛苦。

如果有人向您发送了一个大的、高分辨率的文件(例如1024x1024),您可以在GIMP中将其大小调整为几乎您想要的任何大小。通常情况下,如果分辨率(每英寸像素数)太低,就会出现调整图像大小的问题。要在GIMP中纠正这个问题,您可以:

  1. File -> Open:你的。png文件
  2. Image -> Image Properties:检查分辨率和颜色空间。你需要300 ppi左右的分辨率。在大多数情况下,你希望颜色空间是RGB。
  3. Image -> Mode:设置为RGB
  4. Image -> Scale Image:保持大小不变,设置和Y分辨率为300或更大。达到规模。
  5. Image -> Scale Image:分辨率现在应该是300,你现在可以调整图像到几乎任何你想要的大小。

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

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

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

提醒那些使用potraceimagemagick的人,将透明的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

另一个有趣的现象是你可以使用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

容易

  1. 下载(完全免费)
  2. 遵循简短的youtube视频 . conf文件中的说明

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

一个非技术观察:我个人更喜欢这种方法,而不是“免费”网站提供的服务,因为除了通常需要注册之外,通过上传图像,在所有实际条件下,一个人是把图像交给网站所有者。

我刚刚发现这个问题和答案,因为我正试图做同样的事情!我不想使用其他提到的工具。(不想把我的电子邮件给别人,也不想付钱)。我发现Inkscape (v0.91)可以做得很好。这个教程是快速和容易理解的。

它就像在Inkskape和Shift + Alt + B。中选择你的位图一样简单

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