ImageMagick Image Conversion
Project: Project-independent Gitignored: Yes
Trigger
Use this skill when users request image manipulation tasks including:
-
Converting between image formats (PNG, JPEG, WebP, GIF, TIFF, etc.)
-
Resizing images (dimensions, percentages, aspect ratios)
-
Batch processing multiple images
-
Adjusting image quality and compression
-
Creating thumbnails
-
Basic image transformations (rotate, flip, crop)
Overview
ImageMagick is a powerful command-line tool for image processing. This skill provides guidance for using the magick command to perform common image conversion and manipulation tasks.
Key Command Pattern:
magick input-file [options] output-file
Common Use Cases
Format Conversion
Basic format conversion:
magick image.jpg image.png magick photo.png photo.webp
Batch convert all JPEGs to PNG:
magick mogrify -format png *.jpg
Convert with specific output directory:
mkdir -p output magick mogrify -format webp -path output/ *.jpg
Resizing Images
Resize by percentage:
magick image.jpg -resize 50% output.jpg
Resize to specific width (maintain aspect ratio):
magick image.jpg -resize 800x output.jpg
Resize to specific height (maintain aspect ratio):
magick image.jpg -resize x600 output.jpg
Resize to fit within dimensions (maintain aspect ratio):
magick image.jpg -resize 800x600 output.jpg
Resize to exact dimensions (ignore aspect ratio):
magick image.jpg -resize 800x600! output.jpg
Resize only if larger:
magick image.jpg -resize '800x600>' output.jpg
Resize only if smaller:
magick image.jpg -resize '800x600<' output.jpg
Quality and Compression
Set JPEG quality (1-100, default 92):
magick image.jpg -quality 85 output.jpg
Optimize PNG compression:
magick image.png -quality 95 output.png
Create high-quality WebP:
magick image.jpg -quality 90 output.webp
Thumbnails
Generate thumbnail (fast, lower quality):
magick image.jpg -thumbnail 200x200 thumb.jpg
Generate thumbnail with padding:
magick image.jpg -thumbnail 200x200 -background white -gravity center -extent 200x200 thumb.jpg
Batch Operations
Resize all images in directory:
magick mogrify -resize 800x600 -path resized/ *.jpg
Convert and resize in one operation:
magick mogrify -resize 1200x -format webp -quality 85 -path output/ *.jpg
Process specific file types:
magick mogrify -resize 50% -path smaller/ *.{jpg,png,gif}
Image Information
Display image information:
magick identify image.jpg
Detailed image information:
magick identify -verbose image.jpg
Advanced Transformations
Rotate image:
magick image.jpg -rotate 90 rotated.jpg
Flip horizontally:
magick image.jpg -flop flipped.jpg
Flip vertically:
magick image.jpg -flip flipped.jpg
Crop to specific region:
magick image.jpg -crop 800x600+100+100 cropped.jpg
Auto-orient based on EXIF:
magick image.jpg -auto-orient output.jpg
Strip metadata (reduce file size):
magick image.jpg -strip output.jpg
Important Notes
mogrify vs convert
magick mogrify : Modifies files in-place or writes to specified path
-
Use -path option to preserve originals
-
Efficient for batch operations
magick convert (or just magick ): Creates new files
-
Always preserves original
-
Better for single-file operations
Performance Tips
-
Use -thumbnail for thumbnails: Faster than -resize for small previews
-
Use -strip to remove metadata: Reduces file size significantly
-
Batch operations: Process multiple files in one mogrify command
-
Quality settings: 85-90 is usually optimal for JPEG (balances size/quality)
Format Recommendations
-
JPEG: Photos, complex images with gradients (lossy)
-
PNG: Screenshots, graphics with transparency (lossless)
-
WebP: Modern format, excellent compression (lossy or lossless)
-
GIF: Simple animations, limited colors
-
TIFF: Archival, high-quality storage
Safety Considerations
Always test commands on copies first:
Create test directory
mkdir -p test-output
Test on single file
magick original.jpg -resize 50% test-output/test.jpg
Verify result before batch processing
Use -path with mogrify to preserve originals:
This preserves originals in current directory
magick mogrify -resize 800x -path resized/ *.jpg
Quote wildcards in shell:
Prevents premature shell expansion
magick mogrify -resize '800x600>' -path output/ '*.jpg'
Common Patterns
Web Optimization Workflow
Create optimized versions for web
mkdir -p web-optimized
Convert to WebP with quality 85, resize to max 1920px width
magick mogrify -resize 1920x -quality 85 -format webp -path web-optimized/ *.jpg
Strip metadata to reduce size
magick mogrify -strip web-optimized/*.webp
Thumbnail Generation
Create thumbnail directory
mkdir -p thumbnails
Generate 300x300 thumbnails with white padding
for img in *.jpg; do magick "$img" -thumbnail 300x300 -background white -gravity center -extent 300x300 "thumbnails/${img%.jpg}_thumb.jpg" done
Multi-Format Export
Export to multiple formats for compatibility
mkdir -p exports/{png,webp,jpg}
for img in source/*.png; do name=$(basename "$img" .png) magick "$img" -quality 90 "exports/png/$name.png" magick "$img" -quality 85 "exports/webp/$name.webp" magick "$img" -quality 85 "exports/jpg/$name.jpg" done
Troubleshooting
Check ImageMagick version:
magick -version
Verify supported formats:
magick identify -list format
Test command on single file first:
Always test before batch operations
magick test-image.jpg -resize 50% test-output.jpg
When to Use This Skill
✓ Use this skill for:
-
Format conversions between standard image types
-
Resizing operations (dimensions, percentages)
-
Quality adjustments and compression
-
Batch processing workflows
-
Generating thumbnails or previews
-
Basic transformations (rotate, crop, flip)
✗ Don't use this skill for:
-
Advanced photo editing (use GIMP, Photoshop)
-
Complex filters or effects (consider dedicated tools)
-
Video processing (use FFmpeg)
-
Vector graphics (use Inkscape, Illustrator)
Integration with Workflows
This skill complements other development workflows:
-
Web development: Optimize images for deployment
-
Documentation: Generate screenshots and diagrams
-
CI/CD: Automate image processing in pipelines
-
Content creation: Prepare images for various platforms
The magick command is typically available via Homebrew (brew install imagemagick ) or system package managers.