Skip to content
A ruby Image/Graphics Magick library. Note: This project is no longer maintained.
Latest commit 353c419 Jan 21, 2013 @EricR Add composite command
Failed to load latest commit information.
lib Add composite command Jan 21, 2013
README.markdown Update README.markdown Jan 17, 2013
Rakefile add development dependencies to gemspec and Rakefile Dec 28, 2012


Image Sorcery allows you to leverage all three of ImageMagick's command line tools, mogrify, convert, and identify, for maximum magickal power and minimum memory consumption! It even lets you use GraphicsMagick, too, if that's your thing.

Gem Version Build Status


At, we needed server-side image processing to work well and bend to our will. I wrote this because the ImageMagick libraries we tried suffered from at least one of two problems:

  • Large memory consumption/leaking
  • Didn't expose the entire ImageMagick API

ImageSorcery doesn't try to be anything more than a wrapper that exposes the full ImageMagick and GraphicsMagick APIs. This makes it small and powerful, eliminating the above problems.


gem install image_sorcery

Code Examples

image ="image.png")
image.identify # => "image.png PNG 500x500 500x500+0+0 8-bit DirectClass 236KB 0.010u 0:00.010\n"
image.manipulate!(scale: "50%") # => true
image.dimensions # => { x: 250, y: 250 }
image.convert("thumbnail.jpg", quality: 80, crop: "100x100>") # => true
image ="multi-page.pdf")
image.filename_changed? # => false
image.manipulate!(format: "png", layer: 0) # => true
image.filename_changed? # => true
image.file # => "multi-page.png"
image ="multi-page.pdf")
image.manipulate!(format: "png") # => true
image.filename_changed? # => true

# on ImageMagick it returns all layers as a single file
image.file # => "multi-page-*.png"

# on GrapicksMagick it returns only the fist layer
image.file # => "multi-page.png"

Using GraphicsMagick

Assuming you have GraphicsMagick installed on your box:

image ="image.png")
# use as normal


  • Some more unit tests
  • A few more convenience methods (like "dimensions").
Something went wrong with that request. Please try again.