ImageMagickTM is a robust collection of tools and libraries...to read, write, and manipulate an image in many image formats (over 87 major formats) including popular formats like TIFF, JPEG, PNG, PDF, PhotoCD, and GIF. With ImageMagick you can create images dynamically, making it suitable for Web applications. You can also resize, rotate, sharpen, color reduce, or add special effects to an image and save your completed work in the same or differing image format.
GraphicsMagick is a branch from ImageMagick 5.5.2 and provides a nearly identical API. The GraphicsMagick web site says this about GraphicsMagick:
GraphicsMagick 1.0.1 is a robust collection of tools and libraries which support reading, writing, and manipulating an image in over 88 major formats including popular formats like TIFF, JPEG, JPEG-2000, PNG, PDF, PhotoCD, SVG, and GIF. GraphicsMagick supports creating new images on the fly, making it suitable for building dynamic Web applications. GraphicsMagick may be used to resize, rotate, sharpen, color reduce, or add special effects to an image and save the result in the same or differing image format. Image processing operations are available from the command line, as well as through C, C++, Perl, Java, or COM programming interfaces. Extensions are available from third-parties to support programming in Borland's Delphi, Java, PHP, Python, Scheme, and Ruby.
Both libraries offer a full range of image processing tools that provide the capability to:
- Convert an image from one format to another (e.g. TIFF to JPEG)
- Resize, rotate, sharpen, color reduce, or add special effects to an image
- Create a montage of image thumbnails
- Create a transparent image suitable for use on the Web
- Turn a group of images into a GIF animation sequence
- Create a composite image by combining several separate images
- Draw shapes or text on an image
- Decorate an image with a border or frame
- Describe the format and characteristics of an image
RMagick is a complete interface to ImageMagick and GraphicsMagick, defining three major classes containing over 100 methods, plus numerous attributes and constants. RMagick exploits Ruby idioms such as blocks and iterators, Struct and Array classes, symbols, ?- and !-suffixed methods, and exceptions.
This document is divided into 3 parts. The first is this page. The second part is a usage guide covering both RMagick and ImageMagick/GraphicsMagick usage and conventions. The third, and largest, is the reference guide, which describes all of the RMagick classes and constants. The reference guide includes many examples.
Accompanying the HTML documentation is a set of over 100 example RMagick programs. Each is a complete, stand-alone program that either creates an image from scratch or modifies an input image using one or more RMagick methods. The output images are used as illustrations in the HTML documentation. Throughout this document, click any example image to see the program that created it.
Names I've tried to follow the Pickaxe conventions in this document. A class is identified by its name, which always starts with a capital letter. An object is referred to by its class name, starting with a small letter. For example, a generic ImageList object is referred to as an imagelist. In the Reference section, when a method signature identifies the type of an argument or return value, the type is shown by preceding the class name by "a" or "an". For example, anImage refers to an Image object, and anImageList refers to an ImageList object. Class methods are identified like this: Class.method. Instance methods are identified like this: Class#method.
RMagick is implemented in the Magick module,
therefore its constants are in the Magick namespace. However,
for clarity I've omitted the Magick::
prefix in
most places in this document. You can use the include
Magick
statement to add the constants and methods to the
Object namespace.
References to ImageMagick and GraphicsMagick When describing a feature, API, convention, component, or other element that is shared by both ImageMagick and GraphicsMagick, I use the string ×Magick. For example, "×Magick supports over 87 major image formats" means that both ImageMagick and GraphicsMagick support over 87 formats.
×Magick documentation Text that looks like this is quoted from the ×Magick documentation.
ImageMagick versions When a new method is introduced in ImageMagick, the ImageMagick version number where it is first supported is shown next to the method name like this: (5.5.2). That is, the method is available with ImageMagick 5.5.2 (for example) and later versions.
GraphicsMagick versions When a new method is introduced in GraphicsMagick, the GraphicsMagick version number where it is first supported is shown next to the method name like this: (1.0.1). That is, the method is available with GraphicsMagick 1.0.1 (for example) and later versions.
Example programs and images All of the example images on these pages were created by RMagick. Click the image to see the progam code. Example code is shown with a blue background.
cyclists@nc.rr.com
.
Please report problems with RMagick installation and usage
to cyclists@nc.rr.com
. If
you include "RMagick" in the subject I'll probably give your
email top priority.
For quickest results, include the RMagick and ×Magick
version numbers, along with a thorough description of the
problem.1 RMagick will tell you
both its version number and ×Magick's version number.
Simply bring up irb and print the Magick::Version
constant and the Magick::Magick_version
constants.
irb -r RMagick p Magick::Version » "RMagick 1.3.0" p Magick::Magick_version » "ImageMagick 5.5.7 05/23/03 Q8 http://www.imagemagick.org" p Magick::Magick_version » GraphicsMagick 1.0 05/05/03 Q8 http://www.GraphicsMagick.org/"
It will help a lot if you supply a small Ruby program that reproduces the problem. (Don't forget to include any input image files!).
Please remember I can't help with Ruby or ×Magick
installation and configuration problems. For help with Ruby,
post your questions to comp.lang.ruby
. For help
with ImageMagick or GraphicsMagick, join the ImageMagick or
GraphicsMagick mailing list. See the instructions at
http://www.imagemagick.org/www/magick-list.html or http://sourceforge.net/mail/?group_id=73485.
I'm not an image processing guru, either, so I probably won't be able to help with questions about specific image formats and transformation algorithms. I will be glad, however, to translate between the RMagick API and the ×Magick C API to help you compose a question to the ×Magick developers.
contrib
directory to distribute with RMagick. I'm
particularly interested in getting examples for the RMagick
methods that currently have no examples.
1Don't take offense at this, please, but in my experience this is something that needs to be said: Telling the truth will help speed the resolution of your problem. Don't worry if you think you've done something stupid. I've got lots of experience at doing stupid things myself.
<- Prev | Contents | Next -> |