技能目录
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 在原文件名后追加
.png(a.svg→a.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]