名称: svg-draw
描述: 无需外部图形库,创建 SVG 图像并转换为 PNG 格式。适用于需要生成自定义插图、头像或艺术作品(例如“画一条龙”、“创建头像”、“制作徽标”)或将 SVG 文件转换为 PNG 格式的场景。此技能通过直接编写 SVG 文本(无需 PIL/ImageMagick)实现,并使用系统 rsvg-convert 工具进行 PNG 转换。
使用纯 SVG 代码和系统转换工具生成矢量图形和栅格图像。
对于新绘图:
1. 直接将 SVG 代码写入文件(可使用 assets/ 目录下的模板作为起点)
2. 使用转换脚本将其转换为 PNG
3. 通过适当的渠道(钉钉、Telegram 等)发送
对于现有 SVG 文件:
1. 使用转换脚本将 SVG 转换为 PNG
2. 分享生成的图像
选择或创建模板
assets/ 目录中的现有模板(龙、龙虾等)编写 SVG 文件
bash
# 示例:将 SVG 内容写入文件
write('/path/to/output.svg', svg_content)
转换为 PNG
bash
/root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh input.svg output.png 400 400
始终包含:
* 带有 xmlns="http://www.w3.org/2000/svg" 和 viewBox 属性的 <svg> 标签
* 背景 <rect>(防止透明背景)
* 适当的 width 和 height 属性
常用 SVG 元素:
* 形状:<rect>, <circle>, <ellipse>, <polygon>, <path>
* 文本:使用 text-anchor="middle" 的 <text> 标签以居中显示
* 颜色:使用十六进制代码或命名颜色
* 透明度:添加 opacity 属性实现透明效果
示例角色结构:
背景 → 身体 → 头部 → 面部特征 → 四肢 → 配饰 → 名称
使用附带的转换脚本:
/root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh <input.svg> <output.png> [width] [height]
参数:
* input.svg:源 SVG 文件路径
* output.png:目标 PNG 文件路径
* width:输出宽度(像素,默认:400)
* height:输出高度(像素,默认:400)
示例:
/root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh dragon.svg dragon.png 512 512
assets/dragon_template.svg)蓝色龙,包含:
* 带翅膀的蛇形身体
* 带有高光的金色眼睛
* 角和尖耳朵
* 弯曲的尾巴
* 魔法闪光效果
* 名称标签:"大龙 🐉"
自定义思路:
* 修改 fill="#4a90d9" 以改变身体颜色
* 调整 fill="#ffcc00" 以改变眼睛颜色
* 添加/移除特征(鳞片、火焰等)
* 更改背景颜色
assets/lobster_template.svg)红色龙虾,包含:
* 橙红色的分段外壳
* 大钳子(左和右)
* 八条行走腿
* 柄眼
* 长触角
* 尾扇
* 海洋气泡背景
* 名称标签:"大龙虾 🦞"
自定义思路:
* 调整外壳颜色:fill="#e85d04"(深红色)或 fill="#f48c06"(橙色)
* 更改钳子大小或位置
* 添加更多气泡
* 修改背景
友好/可爱风格:
* 身体:#4a90d9(蓝色),#f48c06(橙色)
* 点缀:#ffcc00(黄色),#ff6b6b(珊瑚色)
* 背景:#1a1a2e(深蓝色)
专业风格:
* 使用柔和的色调
* 坚持使用 2-3 种主色
* 如有需要,可添加微妙的渐变
更改颜色: 找到 fill="#" 或 stroke="#" 属性并替换其十六进制代码
调整元素大小: 调整 rx, ry(椭圆)或 width, height(矩形)
重新定位: 修改 cx, cy(圆形/椭圆)或 x, y(矩形)
添加文本:
<text x="200" y="370" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="#ffcc00" text-anchor="middle">你的文本</text>
svg_to_png.sh - 使用 rsvg-convert 将 SVG 转换为 PNGdragon_template.svg - 友好的蓝色龙lobster_template.svg - 可爱的红色龙虾SVG 未渲染:
* 检查 <svg> 标签是否包含正确的 xmlns 属性
* 确保 viewBox 设置正确
* 验证所有标签都已闭合
转换失败:
* 确认已安装 rsvg-convert:which rsvg-convert
* 检查文件路径是否正确
* 验证 SVG 语法是否有效
图像显示异常:
* 先在浏览器中测试 SVG
* 检查坐标系(viewBox 与 width/height)
* 验证元素堆叠顺序(后绘制的元素显示在顶部)