【发布时间】:2010-12-24 02:24:16
【问题描述】:
如何将 PNG 图像转换为 SVG?
【问题讨论】:
-
通过一些应用程序或通过操作系统命令?如果通过操作系统,请您告诉哪个操作系统..谢谢
如何将 PNG 图像转换为 SVG?
【问题讨论】:
你可能想看看potrace。
【讨论】:
png 是一种位图图像样式,而 SVG 是一种基于矢量的图形设计,它支持位图,因此它不会将图像转换为矢量,而只是嵌入基于矢量格式的图像。您可以使用免费的http://www.inkscape.org/ 来执行此操作。它会嵌入它,但它也有一个类似 Live Trace 的引擎,如果你愿意,它会尝试将它转换为路径(使用 potrace)。在 adobe illustrator(商业)中查看 live trace 就是一个例子:
http://graphicssoft.about.com/od/illustrator/ss/sflivetrace.htm
【讨论】:
我假设您希望编写软件来执行此操作。要天真地做到这一点,您只需找到线条并设置向量。为了智能地做到这一点,您尝试将形状拟合到图纸上(模型拟合)。此外,您应该尝试确定位图区域(您无法通过羞耻或应用纹理建模的区域。我不建议您走这条路线,因为这将花费大量时间并且需要一些图形和计算机视觉知识。但是,输出将比您的原始输出要好得多。
【讨论】:
有一个网站,您可以上传您的图片,然后查看结果。
但是如果你想下载你的 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 将not 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 => 输出文件为 SVGpotrace -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 )
参见维基百科上的this good comparison of raster to vector converters。
【讨论】:
potrace 用于黑白图标。感谢您的反馈意见。但是很抱歉不知道如何保存颜色……嗬!我有一个想法:如果您的原始图像颜色很少(比如说三种独特的颜色),您可以创建三个初始图像(每种颜色一个)。然后转换为 SVG。最后,将三个 SVG 内容合并到一个文件中(SVG 是基于 XML 的)。希望这可以帮助...干杯;-)
convert 和potrace 在许多平台上都可用。我正在使用基于 Linux 的计算机。我昨天刚刚使用这些命令从扫描的纸张生成 SVG。您可以看到结果:cpp-frug.github.io/images/Cpp-President-2017.svg 请详细说明您的目标。你想要/想知道什么?你的需要/愿望是什么?干杯;-)
与 adobe illustrator:
打开 Adobe Illustrator。单击“文件”并选择“打开”以将 .PNG 文件加载到程序中。根据需要编辑图像,然后将其保存为 .SVG 文件。单击“文件”并选择“另存为”。创建新文件名或使用现有名称。确保选择的文件类型是 SVG。选择一个目录,点击“Save”保存文件。
或
在线转换器 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 相同的问题 - 让我想知道网站内部使用什么......
你也可以试试http://image.online-convert.com/convert-to-svg
我总是用它来满足我的需要。
【讨论】:
使用potrace 和imagemagick 的用户注意,将具有透明度的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(据我所见,它们产生相同的SVGs)缩小彩色区域,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
【讨论】:
简单
如您所见,如果您想做很多其他巧妙的 .svg 文件,您也可以使用 Inkscape 来完成。
非技术性观察:我个人更喜欢这种方法而不是“免费”网站产品,因为除了经常需要注册之外,通过上传图片,实际上,就是将图片提供给网站所有者。
【讨论】:
我刚刚发现了这个问题和答案,因为我正在尝试做同样的事情!我不想使用提到的其他一些工具。 (不想泄露我的电子邮件,也不想付钱)。我发现 Inkscape (v0.91) 可以做得很好。这个tutorial 很容易理解。
就像在 Inkskape 中选择您的位图和 Shift+Alt+B 一样简单。
【讨论】: