# ImageMagick — Command-Line Image Processing for 200+ Formats > ImageMagick is a free, open-source software suite for creating, editing, compositing, and converting images. It supports over 200 image formats including PNG, JPEG, TIFF, WebP, SVG, and PDF. ## Install Save as a script file and run: # ImageMagick — Command-Line Image Processing for 200+ Formats ## Quick Use ```bash # Install sudo apt install imagemagick # Debian/Ubuntu brew install imagemagick # macOS # Resize an image magick input.jpg -resize 800x600 output.jpg # Convert PNG to WebP magick input.png output.webp # Create a thumbnail with crop magick input.jpg -thumbnail 200x200^ -gravity center -extent 200x200 thumb.jpg ``` ## Introduction ImageMagick is a mature, widely-used image processing toolkit that has been in active development since 1990. It provides command-line tools and programming APIs for batch image manipulation, format conversion, and compositing. It is a standard dependency in many web frameworks and CI pipelines for automated image handling. ## What ImageMagick Does - Converts between 200+ image formats (PNG, JPEG, WebP, TIFF, SVG, PDF, HEIC, AVIF) - Resizes, crops, rotates, and transforms images via command-line or API - Composites multiple images with layering, blending, and masking operations - Applies filters and effects: blur, sharpen, color adjustment, dithering, morphology - Processes images in batch with shell scripting or the Mogrify in-place tool ## Architecture Overview ImageMagick 7 provides the `magick` unified CLI that replaces the legacy `convert`, `identify`, and `mogrify` commands. Internally, it uses delegate libraries (libjpeg, libpng, librsvg, Ghostscript) for format-specific encoding and decoding. Images are processed in a pipeline where each operation modifies an in-memory image list before final output. ## Self-Hosting & Configuration - Install via package manager or compile from source for custom delegate support - Edit `/etc/ImageMagick-7/policy.xml` to control resource limits (memory, disk, threads) - Set security policies to disable risky delegates like Ghostscript for PDF if not needed - Use environment variables `MAGICK_MEMORY_LIMIT` and `MAGICK_THREAD_LIMIT` for tuning - Integrate via MagickWand (C), Wand (Python), MiniMagick/RMagick (Ruby), or Imagick (PHP) ## Key Features - Supports 200+ formats including modern codecs like AVIF, HEIC, and JXL - Scriptable batch processing with Mogrify and shell pipelines - Color management with ICC profile support for print-accurate conversions - Distributed pixel cache enables processing images larger than available RAM - HDRI (High Dynamic Range Imaging) mode preserves precision for scientific imaging ## Comparison with Similar Tools - **FFmpeg** — Focused on video and audio; can handle image sequences but lacks ImageMagick's image manipulation depth - **GraphicsMagick** — Fork of ImageMagick emphasizing stability; fewer features but sometimes faster - **Sharp (libvips)** — Node.js image library; faster for web-scale resizing but fewer format and effect options - **Pillow (PIL)** — Python imaging library; easier API for simple tasks but less capable for complex compositing - **OpenCV** — Computer vision focus; stronger at analysis and detection, weaker at format conversion and effects ## FAQ **Q: What is the difference between ImageMagick 6 and 7?** A: Version 7 unifies all tools under the `magick` command, adds HDRI by default, improves color management, and renames CLI flags for consistency. **Q: How do I process images in bulk?** A: Use `magick mogrify -resize 50% *.jpg` to modify files in-place, or write a shell loop with `magick convert` for more control. **Q: Is ImageMagick safe to use with user-uploaded files?** A: Configure `policy.xml` to restrict delegates, formats, and resource limits. Disable PDF/SVG processing if not required to reduce attack surface. **Q: Can ImageMagick handle animated GIFs and APNGs?** A: Yes. It can split, edit individual frames, adjust timing, and reassemble animated images. ## Sources - https://github.com/ImageMagick/ImageMagick - https://imagemagick.org/script/command-line-processing.php --- Source: https://tokrepo.com/en/workflows/044138c3-43a5-11f1-9bc6-00163e2b0d79 Author: Script Depot