Axıs
技能目录

svg2png

svg2png

是什么

用 macOS 自带工具把 SVG 渲染为 PNG。零安装:不依赖 rsvg-convert、ImageMagick、inkscape、cairosvg。只做矢量到位图的转换;SVG 的绘制与修改不在本 skill 范围。

方案选型

优先 sips,失败时回退 qlmanage。sips 胜出的原因,全部实测于 macOS 15.5:

维度 sips qlmanage
宽高比 保持(非方形输出非方形) 强制白底填充为正方形
透明背景 保留 alpha 丢失(角像素实测 [255,255,255,255])
输出命名 --out 直接指定 固定为 原名.svg.png,需 mv 重命名
缩放 -Z 同命令完成,矢量级重渲染 -s

两者对渐变、feGaussianBlur 滤镜、mask、中英文 text 的渲染均保真。

怎么做

单文件转换

sips -s format png input.svg --out output.png
  • 运行 sips -g pixelWidth -g pixelHeight output.png,确认输出存在且尺寸符合预期

指定尺寸

-Z 限定最长边、保持宽高比;sips 按目标尺寸重渲染矢量,放大不糊:

sips -s format png -Z 1024 input.svg --out output.png
  • 输出最长边等于指定值;SVG 无 width/height 时以 viewBox 尺寸为基准

回退 qlmanage

sips 对 SVG 输入报错(旧版 macOS 不支持)时改用:

qlmanage -t -s 1024 -o <outdir> input.svg
mv <outdir>/input.svg.png output.png
  • 命名陷阱:qlmanage 在原文件名后追加 .pnga.svga.svg.png),必须 mv 重命名
  • 确认接受代价:非方形被白底填充成正方形,透明背景丢失

批量转换

for f in *.svg; do sips -s format png "$f" --out "${f%.svg}.png"; done

一键脚本

scripts/svg2png.sh 封装选型、回退、重命名、验证:

scripts/svg2png.sh input.svg [output.png] [max-edge]