SVG是可缩放矢量图形文件,一般用于徽标、图标和插图,可以保证在不损失质量情况下调整大小。但是有些情况下还需要把SVG文件转换为PNG格式,便于更好的兼容网站/应用程序。Linux中常见的转换方法是通过命令行工具,或者是使用图形应用程序。
Inkscape就属于功能强大的开源矢量图形编辑器,可支持SVG转换成PNG格式,Inkscape安装:
sudo apt install inkscape [在Debian、Ubuntu 和 Mint上]
sudo yum install inkscape [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo emerge -a sys-apps/inkscape [在Gentoo Linux上]
sudo apk add inkscape [在Alpine Linux上]
sudo pacman -S inkscape [在Arch Linux上]
sudo zypper install inkscape [在OpenSUSE上]
sudo pkg install inkscape [在 FreeBSD 上]
安装完成后,转换方法:
inkscape input.svg --export-type=png --export-filename=output.png --export-dpi=300
ImageMagick属于多功能工具,可以完成SVG转换为PNG,安装:
sudo apt install imagemagick [在Debian、Ubuntu 和 Mint上]
sudo yum install ImageMagick [在RHEL/CentOS/Fedora和Rocky/AlmaLinux上]
sudo emerge -a sys-apps/imagemagick [在Gentoo Linux上]
sudo apk add imagemagick [在Alpine Linux上]
sudo pacman -S imagemagick [在Arch Linux上]
sudo zypper install imagemagick [在OpenSUSE上]
sudo pkg install imagemagick [在 FreeBSD 上]
转换方法:
convert input.svg output.png
如果需要输出PNG文件设置自定义分辨率:
convert -density 300 input.svg output.png
rsvg-convert是专为SVG文件而设计的轻量级工具。安装:
sudo apt install librsvg2-bin [在Debian、Ubuntu 和 Mint 上]
sudo yum install librsvg2-tools [在RHEL/CentOS/Fedora和Rocky/AlmaLinux 上]
sudo emerge -a gnome-base/librsvg [在Gentoo Linux上]
sudo apk add librsvg [在Alpine Linux上]
sudo pacman -S librsvg [在Arch Linux上]
sudo zypper install librsvg2-tools [在OpenSUSE上]
sudo pkg install librsvg2 [在 FreeBSD 上]
使用:
rsvg-convert -o output.png input.svg
可以使用(width)或(height)指定输出图像的宽度或高度-h
rsvg-convert -w 800 -h 600 -o output.png input.svg
如果有多个SVG文件并想一次将其转换为PNG,可以使用简单的shell循环,使用Inkscape:
for file in *.svg; do
inkscape "$file" --export-type=png --export-filename="${file%.svg}.png"
done
使用ImageMagick:
for file in *.svg; do
convert "$file" "${file%.svg}.png"
done
以上命令可以把.svg当前目录中的所有文件转换为.png。