如何将PNG图像转换为SVG?

时间:2009-12-07 17:08:41

标签: svg png

如何将PNG图像转换为SVG?

15 个答案:

答案 0 :(得分:130)

有一个网站,您可以上传图像,并查看结果。

http://vectormagic.com/home

但是如果你想下载你的svg-image,你需要注册。 (如果您注册,则免费获得2张图片)

答案 1 :(得分:122)

potracenot 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

实施例

输入文件= 2017.png Input file

convert 2017.png 2017.pnm

临时文件= 2017.pnm

potrace 2017.pnm -s -o 2017.svg

输出文件= 2017.svg Output file

脚本

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)

  1. 下载Inkscape(完全免费)
  2. 按照此简短youtube video
  3. 中的说明操作

    正如你所看到的,如果你想要做很多其他聪明的.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)

使用potraceimagemagick向使用透明度转换为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种颜色,即。仅白色或黑色)作为输入格式。从我有限的观察结果来看,似乎在抗锯齿的图像PPMPGM(据我所见,它产生相同的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一样简单。

Edge Detection with Inksape Trace bitmap tool based on potrace

答案 10 :(得分:4)

根据为什么您要将.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,您现在可以将图像调整到任意大小。
  6. 不像调整.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,告诉转换你想要的内容。