CLI image manipulation — convert PNG/JPG to SVG, remove watermarks, resize, crop, and edit raster images using ImageMagick and vtracer
Scanned 5/28/2026
Install via CLI
openskills install tta-lab/ttal-cli---
name: image-tools
description: CLI image manipulation — convert PNG/JPG to SVG, remove watermarks, resize, crop, and edit raster images using ImageMagick and vtracer
---
# Image Tools
CLI-first image manipulation using ImageMagick (raster) and vtracer (raster-to-vector).
## Prerequisites
```
# Check if installed
which magick && echo "imagemagick OK" || echo "need: brew install imagemagick"
which vtracer && echo "vtracer OK" || echo "need: cargo install vtracer"
```
Install if missing:
```
brew install imagemagick # raster image editing
cargo install vtracer # raster-to-vector conversion (Rust)
```
## Raster-to-SVG Conversion
### Simple flat icon (single/few colors)
Best for logos, icons, flat illustrations:
```
vtracer --input input.png --output output.svg \
--colormode color \
--filter_speckle 10 \
--color_precision 4 \
--corner_threshold 60 \
--segment_length 6 \
--gradient_step 32
```
### High-detail image
For complex images, increase precision:
```
vtracer --input input.png --output output.svg \
--colormode color \
--filter_speckle 4 \
--color_precision 6 \
--corner_threshold 60 \
--segment_length 4
```
### Black-and-white / monochrome
For line art, text, or single-color designs:
```
vtracer --input input.png --output output.svg --colormode bw
```
### Tuning guide
- **file too large** → increase `filter_speckle`, `gradient_step`, decrease `color_precision`
- **too rough/blocky** → decrease `segment_length`, `filter_speckle`
- **too many colors** → decrease `color_precision` (1-8, lower = fewer colors)
## Raster Editing with ImageMagick
### Remove watermark / overlay
Paint over a region with a solid color (e.g. matching background):
```
# Get image dimensions first
magick identify input.png
# Paint rectangle over bottom-right corner (100x100 area)
magick input.png -fill "#0F0F0F" -draw "rectangle 1180,1180 1280,1280" output.png
```
### Resize
```
# Resize to specific width, maintain aspect ratio
magick input.png -resize 512x output.png
# Resize to exact dimensions
magick input.png -resize 512x512! output.png
# Resize to fit within bounds (no upscale)
magick input.png -resize 512x512\> output.png
```
### Crop
```
# Crop to 500x500 from top-left
magick input.png -crop 500x500+0+0 output.png
# Crop from center
magick input.png -gravity center -crop 500x500+0+0 output.png
```
### Format conversion
```
magick input.png output.jpg
magick input.jpg output.webp
magick input.png -quality 85 output.jpg
```
### Trim whitespace / transparent borders
```
magick input.png -trim +repage output.png
```
### Threshold (prepare for BW tracing)
```
magick input.png -threshold 50% output.pbm
```
## Common Workflows
### Clean image then convert to SVG
When source image has watermarks, logos, or artifacts:
```
# 1. Check dimensions
magick identify input.jpg
# 2. Remove unwanted elements (paint over with background color)
magick input.jpg -fill "#BACKGROUND" -draw "rectangle x1,y1 x2,y2" clean.jpg
# 3. Convert to SVG
vtracer --input clean.jpg --output output.svg --colormode color \
--filter_speckle 10 --color_precision 4 --corner_threshold 60 \
--segment_length 6 --gradient_step 32
# 4. Check output size (aim for <50KB for icons)
ls -la output.svg
```
### Create favicon from logo
```
# Resize to favicon sizes
magick logo.png -resize 32x32 favicon-32.png
magick logo.png -resize 16x16 favicon-16.png
# Or create .ico with multiple sizes
magick logo.png -resize 256x256 -define icon:auto-resize=256,128,64,48,32,16 favicon.ico
```
## Decision Guide
| Task | Tool |
|------|------|
| PNG/JPG → SVG | vtracer |
| Resize, crop, format convert | magick |
| Remove watermark | magick (paint over) → then vtracer if SVG needed |
| Trim borders | magick |
| Create favicon | magick |
No comments yet. Be the first to comment!