首页 文章

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

提问于
浏览
266

如何将PNG图像转换为SVG?

15 回答

  • 122

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

    http://vectormagic.com/home

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

  • 10

    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 .

  • 9

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

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

  • -1

    你可能想看看potrace .

  • 59

    简单

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

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

  • 0

    与adobe illustrator:

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

    要么

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

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

    祝好运

  • 2

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

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

    它仍然不完美 .

  • 7

    给那些使用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
    
  • 4

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

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

  • 15

    我刚发现这个问题和答案,因为我正在尝试做同样的事情!我不想使用提到的其他一些工具 . (唐'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

  • 18

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

  • 7

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

  • 2
  • 130

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

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

  • 28

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

相关问题