imagemagick
关于
This Claude Skill provides developers with a guide for using ImageMagick's command-line tools to programmatically manipulate images. It enables common image processing tasks like format conversion, resizing, cropping, applying effects, and batch operations. Use this skill when you need to automate image manipulation via shell commands.
技能文档
ImageMagick Skill
ImageMagick is a comprehensive, free, open-source software suite for creating, editing, converting, and manipulating images in over 250 formats. This skill covers command-line usage of ImageMagick tools for programmatic image processing.
When to Use This Skill
Use this skill when:
- Converting images between formats (PNG, JPEG, WebP, GIF, etc.)
- Resizing, cropping, or transforming images
- Applying effects, filters, or adjustments to images
- Creating thumbnails or image previews
- Batch processing multiple images
- Compositing or combining images
- Adding watermarks, borders, or text to images
- Optimizing images for web or print
Core Concepts
Primary Commands
ImageMagick provides several command-line tools:
- magick: Modern unified command for all operations (ImageMagick v7+)
- convert: Legacy command for image conversion and manipulation (still widely used)
- mogrify: Modify images in-place (batch processing)
- identify: Display image metadata and properties
- montage: Create image composites and contact sheets
- composite: Overlay images
Note: In ImageMagick v7+, magick is the recommended command. Legacy convert syntax: convert input.png output.jpg becomes magick input.png output.jpg
Command Structure
Basic syntax:
magick [input-options] input-file [operations] [output-options] output-file
Operations are applied left to right in the order specified.
Geometry Specifications
ImageMagick uses geometry strings for dimensions:
100x100- Resize to fit within 100×100 (maintains aspect ratio)100x100!- Force exact size (ignores aspect ratio)100x100^- Fill 100×100 (may crop, maintains aspect ratio)100x- Resize to width 100 (auto height)x100- Resize to height 100 (auto width)50%- Scale to 50% of original100x100+10+20- 100×100 region at offset (10, 20)
Installation
macOS:
brew install imagemagick
Ubuntu/Debian:
sudo apt-get install imagemagick
Verify installation:
magick -version
# or
convert -version
Common Operations
Format Conversion
Convert between image formats:
# PNG to JPEG
magick input.png output.jpg
# JPEG to WebP
magick input.jpg output.webp
# Multiple formats
magick input.png output.jpg output.webp output.gif
# Set JPEG quality (0-100)
magick input.png -quality 85 output.jpg
# Convert with compression
magick input.png -quality 90 -strip output.jpg
Resizing
Resize images while maintaining aspect ratio:
# Resize to fit within 800×600
magick input.jpg -resize 800x600 output.jpg
# Resize to specific width (auto height)
magick input.jpg -resize 800x output.jpg
# Resize to specific height (auto width)
magick input.jpg -resize x600 output.jpg
# Resize to exact dimensions (ignores aspect ratio)
magick input.jpg -resize 800x600! output.jpg
# Scale by percentage
magick input.jpg -resize 50% output.jpg
# Resize only if larger (shrink only)
magick input.jpg -resize 800x600\> output.jpg
# Resize only if smaller (enlarge only)
magick input.jpg -resize 800x600\< output.jpg
Cropping
Extract portions of images:
# Crop 400×400 pixels starting at (100, 100)
magick input.jpg -crop 400x400+100+100 output.jpg
# Crop from center
magick input.jpg -gravity center -crop 400x400+0+0 output.jpg
# Remove virtual canvas after crop
magick input.jpg -crop 400x400+100+100 +repage output.jpg
# Crop to aspect ratio from center
magick input.jpg -gravity center -crop 16:9 output.jpg
Resize + Crop (Thumbnail Generation)
Common pattern for creating square thumbnails:
# Resize to fill 100×100, then crop from center
magick input.jpg -resize 100x100^ -gravity center -extent 100x100 output.jpg
# Alternative using crop
magick input.jpg -resize 275x275^ -gravity center -crop 275x275+0+0 +repage output.jpg
# Create thumbnail with specific background
magick input.jpg -resize 100x100 -background white -gravity center -extent 100x100 output.jpg
Effects and Filters
Apply visual effects:
# Blur
magick input.jpg -blur 0x8 output.jpg
# Gaussian blur with radius 5, sigma 3
magick input.jpg -gaussian-blur 5x3 output.jpg
# Sharpen
magick input.jpg -sharpen 0x1 output.jpg
# Grayscale
magick input.jpg -colorspace Gray output.jpg
# Sepia tone
magick input.jpg -sepia-tone 80% output.jpg
# Negate (invert colors)
magick input.jpg -negate output.jpg
# Edge detection
magick input.jpg -edge 3 output.jpg
# Emboss
magick input.jpg -emboss 2 output.jpg
# Oil painting effect
magick input.jpg -paint 4 output.jpg
# Charcoal drawing
magick input.jpg -charcoal 2 output.jpg
Adjustments
Modify brightness, contrast, and colors:
# Adjust brightness (+/- 0-100)
magick input.jpg -brightness-contrast 10x0 output.jpg
# Adjust contrast
magick input.jpg -brightness-contrast 0x20 output.jpg
# Both brightness and contrast
magick input.jpg -brightness-contrast 10x20 output.jpg
# Adjust saturation
magick input.jpg -modulate 100,150,100 output.jpg
# Adjust hue
magick input.jpg -modulate 100,100,120 output.jpg
# Auto level (normalize contrast)
magick input.jpg -auto-level output.jpg
# Auto gamma correction
magick input.jpg -auto-gamma output.jpg
# Normalize (stretch histogram)
magick input.jpg -normalize output.jpg
Rotation and Flipping
Transform image orientation:
# Rotate 90 degrees clockwise
magick input.jpg -rotate 90 output.jpg
# Rotate 180 degrees
magick input.jpg -rotate 180 output.jpg
# Rotate counter-clockwise
magick input.jpg -rotate -90 output.jpg
# Rotate with background color
magick input.jpg -background white -rotate 45 output.jpg
# Flip vertically
magick input.jpg -flip output.jpg
# Flip horizontally (mirror)
magick input.jpg -flop output.jpg
# Auto-orient based on EXIF
magick input.jpg -auto-orient output.jpg
Borders and Frames
Add borders to images:
# Add 10px black border
magick input.jpg -border 10x10 output.jpg
# Add border with specific color
magick input.jpg -bordercolor red -border 10x10 output.jpg
# Add frame effect
magick input.jpg -mattecolor gray -frame 10x10+5+5 output.jpg
# Add shadow effect
magick input.jpg \( +clone -background black -shadow 80x3+5+5 \) \
+swap -background white -layers merge +repage output.jpg
Text and Watermarks
Add text overlays:
# Add simple text
magick input.jpg -pointsize 30 -fill white -annotate +10+30 "Hello" output.jpg
# Add text with positioning
magick input.jpg -gravity south -pointsize 20 -fill white \
-annotate +0+10 "Copyright 2025" output.jpg
# Add text with background
magick input.jpg -gravity center -pointsize 40 -fill white \
-undercolor black -annotate +0+0 "Watermark" output.jpg
# Add semi-transparent watermark
magick input.jpg \( -background none -fill "rgba(255,255,255,0.5)" \
-pointsize 50 label:"DRAFT" \) -gravity center -compose over -composite output.jpg
Compositing
Combine multiple images:
# Overlay watermark on image
magick input.jpg watermark.png -gravity southeast -composite output.jpg
# Overlay with transparency
magick input.jpg watermark.png -gravity center \
-compose over -composite output.jpg
# Tile pattern
magick input.jpg pattern.png -compose over -tile -composite output.jpg
# Side-by-side images
magick input1.jpg input2.jpg +append output.jpg
# Stack images vertically
magick input1.jpg input2.jpg -append output.jpg
Format-Specific Options
Optimize for different formats:
# JPEG with quality and strip metadata
magick input.png -quality 85 -strip output.jpg
# Progressive JPEG
magick input.png -quality 85 -interlace Plane output.jpg
# PNG with compression level (0-9)
magick input.jpg -quality 95 output.png
# WebP with quality
magick input.jpg -quality 80 output.webp
# WebP lossless
magick input.png -define webp:lossless=true output.webp
# GIF with optimization
magick input.png -colors 256 output.gif
# Transparent background PNG
magick input.jpg -transparent white output.png
Batch Processing
Using mogrify
Modify multiple files in-place:
# Convert all JPEGs to PNG in current directory
mogrify -format png *.jpg
# Resize all images in directory
mogrify -resize 800x600 *.jpg
# Apply to output directory (preserves originals)
mogrify -path ./output -resize 800x600 *.jpg
# Batch thumbnail generation
mogrify -path ./thumbnails -resize 275x275^ -gravity center \
-crop 275x275+0+0 +repage *.jpg
# Batch format conversion with quality
mogrify -path ./optimized -format jpg -quality 85 -strip *.png
Using shell loops
For more complex batch operations:
# Convert with custom naming
for img in *.jpg; do
magick "$img" -resize 800x600 "resized_$img"
done
# Multi-step processing
for img in *.jpg; do
magick "$img" -resize 1920x1080^ -gravity center \
-crop 1920x1080+0+0 +repage -quality 85 "processed_$img"
done
# Different output format
for img in *.png; do
magick "$img" -quality 90 "${img%.png}.jpg"
done
Image Information
Using identify
Get image metadata:
# Basic info
identify image.jpg
# Detailed information
identify -verbose image.jpg
# Format only
identify -format "%f: %wx%h %b\n" image.jpg
# Specific attributes
identify -format "%f: %wx%h, %[colorspace], %[type]\n" image.jpg
# File size
identify -format "%f: %b\n" image.jpg
# Multiple images
identify *.jpg
Common format strings
%f- filename%w- width%h- height%b- file size%[colorspace]- colorspace%[type]- image type%[channels]- number of channels%[depth]- bit depth
Advanced Techniques
Creating Contact Sheets
Use montage:
# Basic grid
montage *.jpg -geometry 200x200+2+2 contact-sheet.jpg
# With labels
montage *.jpg -geometry 200x200+2+2 -label '%f' contact-sheet.jpg
# Custom layout (3 columns)
montage *.jpg -tile 3x -geometry 200x200+5+5 contact-sheet.jpg
Animated GIFs
Create animations:
# Create GIF from images
magick -delay 100 -loop 0 frame*.png animated.gif
# Optimize GIF
magick animated.gif -fuzz 5% -layers Optimize optimized.gif
# Extract frames from GIF
magick animated.gif frame_%03d.png
Complex Pipelines
Chain multiple operations:
# Resize, crop, add border, adjust brightness
magick input.jpg \
-resize 1000x1000^ \
-gravity center \
-crop 1000x1000+0+0 +repage \
-bordercolor black -border 5x5 \
-brightness-contrast 5x10 \
-quality 90 \
output.jpg
# Create thumbnail with watermark
magick input.jpg \
-resize 400x400^ \
-gravity center \
-extent 400x400 \
\( watermark.png -resize 100x100 \) \
-gravity southeast -geometry +10+10 \
-composite \
output.jpg
Performance Optimization
Memory and Speed
# Limit memory usage (useful for large images)
magick -limit memory 2GB -limit map 4GB input.jpg -resize 50% output.jpg
# Set thread count
magick -limit thread 4 input.jpg -resize 50% output.jpg
# Use streaming for large files
magick -define stream:buffer-size=0 huge.jpg -resize 50% output.jpg
Quality vs Size Trade-offs
# High quality (larger file)
magick input.jpg -quality 95 output.jpg
# Balanced (recommended for web)
magick input.jpg -quality 85 -strip output.jpg
# Lower quality (smaller file)
magick input.jpg -quality 70 -sampling-factor 4:2:0 -strip output.jpg
# Progressive JPEG (better for web)
magick input.jpg -quality 85 -interlace Plane -strip output.jpg
Common Patterns
Avatar/Profile Picture Generation
# Square thumbnail from any aspect ratio
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 avatar.jpg
# Circular avatar (PNG with transparency)
magick input.jpg -resize 200x200^ -gravity center -extent 200x200 \
\( +clone -threshold -1 -negate -fill white -draw "circle 100,100 100,0" \) \
-alpha off -compose copy_opacity -composite avatar.png
Responsive Images
# Generate multiple sizes
for size in 320 640 1024 1920; do
magick input.jpg -resize ${size}x -quality 85 "output-${size}w.jpg"
done
Watermarking
# Bottom-right watermark
magick input.jpg watermark.png -gravity southeast \
-geometry +10+10 -composite output.jpg
# Tiled watermark
magick input.jpg \( watermark.png -alpha set -channel A \
-evaluate multiply 0.3 +channel \) -tile -composite output.jpg
Error Handling
Common issues and solutions:
File not found:
# Check file exists
[ -f input.jpg ] && magick input.jpg output.png || echo "File not found"
Invalid geometry:
# Validate dimensions first
identify -format "%wx%h" input.jpg
Memory errors:
# Limit resources
magick -limit memory 1GB -limit map 2GB input.jpg output.png
Best Practices
- Always use
-stripto remove metadata (reduces file size) - Set appropriate quality (85 for JPEG is good balance)
- Use
+repageafter crop to reset virtual canvas - Quote file paths with spaces:
"my image.jpg" - Test on sample before batch processing
- Backup originals when using mogrify
- Use
-auto-orientto respect EXIF orientation - Progressive JPEGs for web (use
-interlace Plane) - Limit memory for large batches to prevent crashes
- Check output after complex operations
Troubleshooting
Policy Restrictions
Some systems restrict ImageMagick operations for security:
# Check policy
identify -list policy
# Edit policy file (if needed)
sudo nano /etc/ImageMagick-6/policy.xml
# or
sudo nano /etc/ImageMagick-7/policy.xml
Common Errors
"convert: not authorized"
- ImageMagick security policy blocking operation
- Edit policy.xml to allow specific formats/operations
"convert: no decode delegate"
- Missing format support library
- Install additional libraries (libjpeg, libpng, libwebp, etc.)
"convert: memory allocation failed"
- Image too large or insufficient memory
- Use
-limitflags or process in smaller chunks
Resources
- Official Documentation: https://imagemagick.org/
- Command-line Options: https://imagemagick.org/script/command-line-options.php
- Examples: https://imagemagick.org/Usage/
- Format Support: https://imagemagick.org/script/formats.php
Command Reference Quick Guide
Format Conversion:
magick input.ext output.ext
Resize:
magick input.jpg -resize WIDTHxHEIGHT output.jpg
Crop:
magick input.jpg -crop WIDTHxHEIGHT+X+Y output.jpg
Thumbnail:
magick input.jpg -resize 100x100^ -gravity center -extent 100x100 thumb.jpg
Effects:
magick input.jpg -blur 0x8 output.jpg
Batch:
mogrify -resize 800x600 *.jpg
Info:
identify -verbose image.jpg
快速安装
/plugin add https://github.com/Elios-FPT/EliosCodePracticeService/tree/main/imagemagick在 Claude Code 中复制并粘贴此命令以安装该技能
GitHub 仓库
相关推荐技能
langchain
元LangChain是一个用于构建LLM应用程序的框架,支持智能体、链和RAG应用开发。它提供多模型提供商支持、500+工具集成、记忆管理和向量检索等核心功能。开发者可用它快速构建聊天机器人、问答系统和自主代理,适用于从原型验证到生产部署的全流程。
project-structure
元这个Skill为开发者提供全面的项目目录结构设计指南和最佳实践。它涵盖了多种项目类型包括monorepo、前后端框架、库和扩展的标准组织结构。帮助团队创建可扩展、易维护的代码架构,特别适用于新项目设计、遗留项目迁移和团队规范制定。
issue-documentation
元该Skill为开发者提供标准化的issue文档模板和指南,适用于创建bug报告、GitHub/Linear/Jira问题等场景。它能系统化地记录问题状况、复现步骤、根本原因、解决方案和影响范围,确保团队沟通清晰高效。通过实施主流问题跟踪系统的最佳实践,帮助开发者生成结构完整的故障排除文档和事件报告。
llamaindex
元LlamaIndex是一个专门构建RAG应用的开发框架,提供300多种数据连接器用于文档摄取、索引和查询。它具备向量索引、查询引擎和智能代理等核心功能,支持构建文档问答、知识检索和聊天机器人等数据密集型应用。开发者可用它快速搭建连接私有数据与LLM的RAG管道。
