SuperAPI AI 工具集

lov-png2svg

设计与创作

查看项目

更新于 10-16 09:22

技能介绍

用途

lov-png2svg 用于将 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:颜色精度,调大后更准确。

运行上下文与反馈规则

运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。报错提供可复制的 context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。

通用反馈闭环:用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须先判断意见是 task-specific(仅本次)还是 reusable(可跨任务复用)。task-specific 只修改当前任务,不改 Skill。reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。

适用场景与限制

适用于需要将 PNG 位图转换为可缩放 SVG 矢量图,尤其是需要去除白色背景并期望较平滑样条曲线的场景。限制方面:依赖 ImageMagick、vtracer 与 svgo 三套外部工具,需先行安装;KEEP_BG 默认去除白色背景,若需保留背景需显式设置;资料未提供除上述参数外的更多配置项、支持平台范围或性能数据,暂未提供。