PNG to SVG Skill 用于将 PNG 图片转换为高质量矢量 SVG,并支持去除白色背景。
用途 当用户需要将 PNG 图片转换为 SVG 时使用本技能。
工具链 完整流程为:PNG → magick(去白底 + alpha 阈值)→ vtracer(样条曲线)→ svgo(压缩)→ SVG。
- ImageMagick(magick):去除白色背景并做 alpha 阈值处理。
- vtracer:样条曲线矢量化,相比 potrace 更平滑。
- svgo:SVG 路径压缩优化。
输入参数
- INPUT_PNG:输入 PNG 文件路径(必需)。
- OUTPUT_SVG:输出 SVG 路径(默认:同名 .svg)。
- KEEP_BG:是否保留背景(默认 false,即去除白色背景)。
执行步骤
Step 1 预处理(去白底):若 KEEP_BG=false,执行:
magick INPUT_PNG
-fuzz 15% -transparent white
-channel A -threshold 50% +channel
INPUT_PNG.temp.png
Step 2 矢量化:
vtracer --input INPUT_PNG.temp.png --output OUTPUT_SVG
--mode spline
--filter_speckle 8
--color_precision 8
--corner_threshold 120
--segment_length 6
--path_precision 5
Step 3 压缩优化: npx svgo OUTPUT_SVG -o OUTPUT_SVG --multipass
Step 4 清理: rm -f INPUT_PNG.temp.png
输出 返回生成的 SVG 文件路径,并报告文件大小。 示例输出格式: ✓ PNG → SVG 转换完成 输入: {INPUT_PNG} 输出: {OUTPUT_SVG} 大小: {file_size}
依赖 首次使用前需安装: brew install imagemagick cargo install vtracer npm install -g svgo # 或使用 npx
参数调优
- filter_speckle:过滤小斑点,调大后效果更干净。
- corner_threshold:角点阈值,调大后更平滑。
- segment_length:线段长度,调大后更平滑。
- color_precision:颜色精度,调大后更准确。
限制 资料的介绍与描述均未提供关于收费、价格、支持平台、效果保证等其他信息。