“I swear by my life and my love of it that I will never live for the sake of another man, nor ask another man to live for mine.”
ImageMagick started with a request from my DuPont supervisor, Dr. David Pensak, to display computer-generated images on a monitor only capable of showing 256 unique colors simultaneously.
Origins & The Usenet Days
In 1987, monitors that could display 24-bit true color images were rare and quite expensive. There were a plethora of chemists and biologists at DuPont, but very few computer scientists to confer with. Instead, I turned to Usenet for help, posting a request for an algorithm to reduce 24-bit images to 256 colors. Paul Raveling of the USC Information Sciences Institute responded with not only a solution, but one already available in source code from USC's FTP site.
Over the next few years, frequent help with other computer science problems at DuPont compelled me to give back to the knowledgeable folks on Usenet. I decided to freely release my developed image processing tools to the world.
The 1990 Release & DuPont Copyright
In 1990, few freely available image processing tools existed, so I expected an enthusiastic reception. Before release, Dr. Pensak had to convince upper management at DuPont to give away what they might perceive as valuable intellectual property. I suspect they agreed simply because ImageMagick was not chemically or biologically based, so its value to the company was unclear.
Either way, ImageMagick would not exist today without DuPont transferring the copyright to ImageMagick Studio LLC. ImageMagick was officially posted to Usenet's comp.archives group on August 1st, 1990.
Evolution Through Versions 4 and 5
Following the release, occasional enhancement requests, bug reports, and contributions trickled in. In the mid-90s, I released the culmination of these efforts as ImageMagick 4.2.9. At the time, I thought ImageMagick was complete; it was utilized by thousands worldwide and even appeared as part of a new freely distributed operating system called “Linux”.
The next generation, version 5, started when Bob Friesenhahn suggested improving the API so users could leverage algorithms from other languages or scripts. Bob wrote the C++ wrapper Magick++ and contributed the module loader facility, automatic file identification, and test suites. Other notable contributors joined—Glenn Randers-Pehrson, William Radcliffe, and Leonard Rosenthol. As tens of thousands of users relied on it, a desire to freeze the API led to a fork by Bob and others, while I continued active development.
Key Contributors and Version 6
Anthony Thyssen soon contacted me regarding command-line program design and confusion when handling multiple images. He suggested an orderly, well-defined method, which became ImageMagick version 6. His efforts are detailed on his page, Examples of ImageMagick Usage, which I highly recommend.
Other notable contributors include Fred Weinhaus (command-line scripts for geometric transforms, blurs, and filters), Glenn Randers-Pehrson (PNG guru), and Dirk Lemstra (Windows robustness improvements and the Magick.NET .NET wrapper).
Modern Architecture: Version 7
The design of ImageMagick is an evolutionary process. With version 7, we improved design patterns based on lessons learned from version 6. Originally designed to display RGB images to an X Windows server, support later expanded to RGBA, CMYK, and arbitrary colorspaces with an arbitrary number of pixel channels. Additionally, ImageMagick 7 stores pixel channels as floats, permitting out-of-band values (such as negative numbers) and reducing rounding errors.
Cristy
Principal ImageMagick Architect