← Back to Skills
Media

svg-draw

lijy2015 By lijy2015 👁 12 views ▲ 0 votes

Create SVG images and convert them to PNG without external graphics

GitHub
---
name: svg-draw
description: Create SVG images and convert them to PNG without external graphics libraries. Use when you need to generate custom illustrations, avatars, or artwork (e.g., "draw a dragon", "create an avatar", "make a logo") or convert SVG files to PNG format. This skill works by writing SVG text directly (no PIL/ImageMagick required) and uses system rsvg-convert for PNG conversion.
---

# SVG Draw

Generate vector graphics and raster images using pure SVG code and system conversion tools.

## Quick Start

**For new drawings:**
1. Write SVG code directly to a file (use templates in `assets/` as starting points)
2. Convert to PNG using the conversion script
3. Send via the appropriate channel (DingTalk, Telegram, etc.)

**For existing SVG files:**
1. Use the conversion script to convert SVG → PNG
2. Share the resulting image

## Creating SVG Images

### Basic Workflow

1. **Choose or create a template**
   - Check `assets/` for existing templates (dragon, lobster, etc.)
   - Or write SVG from scratch

2. **Write the SVG file**
   ```bash
   # Example: Write SVG to file
   write('/path/to/output.svg', svg_content)
   ```

3. **Convert to PNG**
   ```bash
   /root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh input.svg output.png 400 400
   ```

### SVG Structure Tips

**Always include:**
- `<svg>` tag with `xmlns="http://www.w3.org/2000/svg"` and `viewBox`
- Background `<rect>` (prevents transparent backgrounds)
- Appropriate `width` and `height` attributes

**Common SVG elements:**
- Shapes: `<rect>`, `<circle>`, `<ellipse>`, `<polygon>`, `<path>`
- Text: `<text>` with `text-anchor="middle"` for centering
- Colors: Use hex codes or named colors
- Opacity: Add `opacity` attribute for transparency effects

**Example character structure:**
```
Background → Body → Head → Face features → Limbs → Accessories → Name
```

## Converting SVG to PNG

Use the bundled conversion script:

```bash
/root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh <input.svg> <output.png> [width] [height]
```

**Parameters:**
- `input.svg`: Source SVG file path
- `output.png`: Destination PNG file path
- `width`: Output width in pixels (default: 400)
- `height`: Output height in pixels (default: 400)

**Example:**
```bash
/root/.openclaw/workspace/skills/svg-draw/scripts/svg_to_png.sh dragon.svg dragon.png 512 512
```

## Available Templates

### Dragon Template (`assets/dragon_template.svg`)
Blue dragon with:
- Serpentine body with wings
- Golden eyes with highlights
- Horns and pointed ears
- Curved tail
- Magical sparkles
- Name label: "大龙 🐉"

**Customization ideas:**
- Change `fill="#4a90d9"` for different body colors
- Adjust eye color by modifying `fill="#ffcc00"`
- Add/remove features (scales, fire, etc.)
- Change background color

### Lobster Template (`assets/lobster_template.svg`)
Red lobster with:
- Orange-red shell with segments
- Large claws (left and right)
- Eight walking legs
- Eyes on stalks
- Long antennae
- Tail fan
- Ocean bubbles background
- Name label: "大龙虾 🦞"

**Customization ideas:**
- Adjust shell color: `fill="#e85d04"` (darker red) or `fill="#f48c06"` (orange)
- Change claw size or position
- Add more bubbles
- Modify background

## Design Guidelines

### Color Palettes

**Friendly/Cute:**
- Body: `#4a90d9` (blue), `#f48c06` (orange)
- Accents: `#ffcc00` (yellow), `#ff6b6b` (coral)
- Background: `#1a1a2e` (dark blue)

**Professional:**
- Use muted tones
- Stick to 2-3 main colors
- Add subtle gradients if needed

### Character Design Principles

1. **Keep it simple** — Too many details look messy at small sizes
2. **Use contrast** — Light features on dark backgrounds
3. **Add personality** — Eyes, expressions, small details
4. **Include a label** — Add name/title at the bottom for context
5. **Test at target size** — View at 400x400 to check readability

## Common Tasks

### Creating an Avatar

1. Start with a template that matches the vibe (dragon, lobster, etc.)
2. Modify colors and features
3. Add personal touches (accessories, expressions)
4. Add name label at bottom
5. Convert and send

### Making a Logo

1. Use simple geometric shapes
2. Limit to 2-3 colors
3. Consider scalable design
4. Test at multiple sizes
5. Export at higher resolution (800x800 or 1024x1024)

### Customizing Templates

**Change colors:** Find `fill="#"` or `stroke="#"` attributes and replace the hex codes

**Resize elements:** Adjust `rx`, `ry` (ellipses) or `width`, `height` (rectangles)

**Reposition:** Modify `cx`, `cy` (circles/ellipses) or `x`, `y` (rectangles)

**Add text:**
```xml
<text x="200" y="370" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="#ffcc00" text-anchor="middle">Your Text</text>
```

## Resources

### scripts/
- `svg_to_png.sh` - Convert SVG to PNG using rsvg-convert

### assets/
- `dragon_template.svg` - Friendly blue dragon
- `lobster_template.svg` - Cute red lobster

## Troubleshooting

**SVG not rendering:**
- Check for proper `<svg>` tag with `xmlns` attribute
- Ensure `viewBox` is set correctly
- Verify all tags are closed

**Conversion fails:**
- Confirm `rsvg-convert` is installed: `which rsvg-convert`
- Check file paths are correct
- Verify SVG syntax is valid

**Image looks wrong:**
- Test SVG in browser first
- Check coordinate system (viewBox vs width/height)
- Verify element stacking order (later elements draw on top)
media

Comments

Sign in to leave a comment

Loading comments...