如何将PNG图像转换为SVG? [关闭]

如何将PNG图像转换为SVG?

回答(15)

3 years ago

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

http://vectormagic.com/home

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

3 years ago

potracenot support 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 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 .

3 years ago

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

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

3 years ago

你可能想看看potrace .

3 years ago

简单

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

非技术性观察:我个人更喜欢这种方法而不是“免费”网站产品,因为除了经常需要注册外,通过上传图像,在所有实际条件中,都是将图像提供给网站所有者 .

3 years ago

与adobe illustrator:

打开Adobe Illustrator . 单击“文件”并选择“打开”以将.PNG文件加载到程序中 . 根据需要编辑图像,然后将其另存为.SVG文件 . 单击“文件”,然后选择“另存为” . 创建新文件名或使用现有名称 . 确保所选文件类型为SVG . 选择一个目录,然后单击“保存”以保存文件 .

要么

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

我更喜欢AI,因为你可以做任何改变

祝好运

3 years ago

令我惊讶的是,事实证明,只能处理黑白 . 对于您的用例可能没问题,但有些人可能会认为缺少颜色跟踪是有问题的 .

就个人而言,我已经获得了满意的结果Vector Magic

它仍然不完美 .

3 years ago

给那些使用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种颜色,即白色或黑色)作为输入格式 . 根据我有限的观察结果,看起来在反锯齿的图像上,PPMPGM(据我所知,它产生相同的SVGs)缩小了彩色区域,并扩大了彩色区域(尽管只是一点点) . 大概这是 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

3 years ago

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

我总是把它用于我的需要 .

3 years ago

我刚发现这个问题和答案,因为我正在尝试做同样的事情!我不想使用提到的其他一些工具 . (唐't want to give my email away, and don'吨想要付钱) . 我发现Inkscape(v0.91)可以做得很好 . 这个tutorial快速且易于理解 .

就像在Inkskape和 Shift+Alt+B. 中选择位图一样简单

Edge Detection with Inksape Trace bitmap tool based on potrace

3 years ago

根据您要将.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更容易,更快 .

3 years ago

我假设您希望编写软件来执行此操作 . 要天真地做,你只需要找到行并设置向量 . 为了智能地执行此操作,您尝试将形状拟合到图形上(模型拟合) . 此外,您应该尝试确定位图区域(您无法通过阴影或应用纹理建模的区域 . 我不建议使用此路线,因为它需要相当多的时间并需要一些图形和计算机视觉知识 . 但是,输出将比原始输出更多并且扩展得更好 .

3 years ago

这个工具现在工作得非常好 .

http://www.mobilefish.com/services/image2svg/image2svg.php

3 years ago

如果您使用的是某些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,告诉转换你想要的 .