核心用法
svg-draw 是一款基于纯 SVG 代码和系统工具 rsvg-convert 的图像生成技能,无需依赖 PIL、ImageMagick 等重型图形库。用户通过编写 XML 格式的 SVG 代码创建矢量图形,再通过内置脚本转换为 PNG 位图输出。
工作流程:
1. 直接编写或修改 SVG 模板代码(提供龙、龙虾等预设模板)
2. 使用 write() 将 SVG 内容写入文件
3. 调用 /root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh 完成格式转换
显著优点
- 零外部依赖:仅依赖系统自带的 rsvg-convert,无需安装复杂图形库
- 完全可编程:SVG 作为文本格式,可动态生成、参数化调整
- 模板化设计:提供 dragon、lobster 等完整模板,降低上手门槛
- 跨平台兼容:SVG 是 Web 标准格式,生成后可二次编辑
- 体积轻量:矢量图可无损缩放,输出尺寸灵活可控
潜在缺点与局限性
- 学习曲线陡峭:需要掌握 SVG 语法(path、viewBox、坐标系等),非可视化操作
- 调试成本高:无实时预览,需反复转换查看效果
- 复杂图形困难:精细插画、照片级效果难以纯代码实现
- 字体依赖风险:系统字体缺失可能导致文字渲染异常
- 功能边界明确:仅限 SVG 创建与格式转换,无图像编辑、滤镜、合成能力
适合人群
- 开发者/技术人员:习惯代码工作流,需要程序化生成图形
- 快速原型场景:内部工具、测试数据、简单头像/标识生成
- 教育资源:学习 SVG 语法的实践环境
常规风险
- 路径注入风险:若动态拼接 SVG 内容且未转义用户输入,可能导致 XML 实体注入
- 文件覆盖风险:write() 操作直接覆盖目标路径,需确认权限
- rsvg-convert 依赖:目标系统若未安装 librsvg 工具链,转换将失败
- 分辨率误判:默认 400x400 可能不满足打印/高清场景需求