如何将PNG图像转换为SVG?
当前回答
如果你使用的是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,这告诉转换你想要的。
其他回答
这取决于您为什么要从.png转换为.svg,您可能不必经历这个麻烦。如果你不是很熟悉可用的工具,或者你不是一个专业的图形设计师,那么从。png(光栅)转换到。svg(矢量)可能会很痛苦。
如果有人向您发送了一个大的、高分辨率的文件(例如1024x1024),您可以在GIMP中将其大小调整为几乎您想要的任何大小。通常情况下,如果分辨率(每英寸像素数)太低,就会出现调整图像大小的问题。要在GIMP中纠正这个问题,您可以:
File ->打开:您的。png文件 图像->图像属性:检查分辨率和颜色空间。你需要300 ppi左右的分辨率。在大多数情况下,你希望颜色空间是RGB。 Image ->模式:设置为RGB 图像->比例图像:保持大小不变,设置和Y分辨率为300或更高。达到规模。 图像->缩放图像:分辨率现在应该是300,你现在可以调整图像到几乎任何你想要的大小。
虽然不像调整.svg文件那么简单,但如果你已经有了一个大的、高分辨率的图像,那么肯定比尝试将.png转换为.svg更容易、更快。
令我惊讶的是,potrace原来只能处理黑色和白色。对于您的用例来说,这可能没问题,但有些人可能会认为缺乏颜色追踪是有问题的。
就我个人而言,我对 向量的魔法
但它仍然不完美。
有一个网站,你可以上传你的图片,并看到结果。
http://vectormagic.com/home
但是如果你想下载你的svg-image,你需要注册。 (注册即可免费获得2张图片)
potrace不支持PNG作为输入文件,而是支持PNM。 因此,首先将PNG转换为PNM:
convert file.png file.pnm # PNG to PNM
potrace file.pnm -s -o file.svg # PNM to SVG
解释选项
potrace -s =>输出文件是SVG 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 )
另请参阅
也可以在维基百科上看到栅格转换器和矢量转换器的比较。
Easy
下载Inkscape(完全免费) 按照youtube上这段简短视频的说明去做
正如你将看到的,如果你想做很多其他聪明的。svg的东西,你也可以使用Inkscape。
一个非技术观察:我个人更喜欢这种方法,而不是“免费”网站提供的服务,因为除了通常需要注册之外,通过上传图像,在所有实际条件下,一个人是把图像交给网站所有者。
推荐文章
- 在MarkDown中包含SVG(托管在GitHub上)
- 在Android中使用SVG图像最简单的方法是什么?
- 如何计算圆弧(圆)的SVG路径
- SVG定位
- jQuery SVG vs.拉斐尔
- 你能控制SVG的描边宽度的绘制方式吗?
- 如何将PNG图像转换为SVG?
- 图标:.ico或.png /正确的标签?
- 在CSS中为PNG图像删除阴影
- 我可以用CSS改变svg路径的填充颜色吗?
- 是否需要诸如“xmlns”和“version”之类的SVG参数?
- jQuery SVG,为什么我不能添加类?
- 如何在SVG矩形中放置和居中文本
- 无法在typescript中导入svg文件
- 我如何居中一个SVG在一个div?