The Definitive Guide to ImageMagick
Michael J. Ross writes "To modify a digital image, most computer users turn to a GUI-based image processing application, such as Photoshop. However, while Photoshop and many other similar programs can process multiple images in batch mode, they still require manual usage, and thus typically are unable to process images via a command line or within a second application. Those capabilities call for a programmatic digital image manipulation tool such as ImageMagick, which is explored in a relatively new book, The Definitive Guide to ImageMagick." Read the rest of Michael's review.
The Definitive Guide to ImageMagick
author
Michael Still
pages
335
publisher
Apress
rating
7
reviewer
Michael J. Ross
ISBN
1590595904
summary
An introduction to using ImageMagick for digital image manipulation.
The author of this title is Michael Still, a programmer who gained experience with ImageMagick during his eight years of working on imaging applications, as well as writing articles on ImageMagick for IBM DeveloperWorks. Apress maintains a Web page for the title, where a visitor can purchase the electronic version of the book, read its table of contents, or download its source code or a sample chapter (Chapter 4 — Using Other ImageMagick Tools) in PDF format. They also have a link where readers can submit errata — and apparently be the first to do so, as there are no existing errata listed on the Web page.
The book's 335 pages are organized into a dozen chapters, following an introduction and a few other standard sections, including a forward written by ImageMagick's principal architect, Christy, who briefly explains the product's 20 years of history, development, and lack of decent documentation. That is where this book is intended to fill the gap, and Christy notes that most future questions about ImageMagick will be answered by pointing people to this book, as is also noted on ImageMagick's homepage.
The first chapter of the book explains how to install and configure ImageMagick, for several Linux distros, as well as Microsoft Windows — using the precompiled versions, or by compiling from ImageMagick's source code. The chapter is wrapped up with a brief description of ImageMagick's online help, debug output, verbose output, and version information. The next ten chapters fall into two categories: ImageMagick usage as a standalone, and from within other applications. The first category of chapters covers basic image manipulation, compression, other metadata, ImageMagick tools, artistic transformations, other image transformations, and drawing commands. The second category discusses how to utilize ImageMagick from within programs written in Perl, C, Ruby, and PHP. The 12th and final chapter is quite brief, and describes where to find online help (Web sites, blogs, mailing lists, and forums) and where to report any apparent bug in ImageMagick.
For Windows users, the first chapter may begin badly, as the author fails to explain which precompiled version the reader should select if they wish to install ImageMagick on a Windows PC. For each version, there are four flavors to choose from. But which one is right for the reader? "static" vs. "dll?" "Q16" vs. "Q8?" What are the differences? The ImageMagick Web site and FTP file listings appear to have no README file or installation help file to explain which flavor you should download. The book should provide some assistance here, but does not. The former topic, static versus DLL, is mentioned only in reference to compiling ImageMagick from source — information which the reader will probably never see, should they choose to install the precompiled binaries and get started on ImageMagick as quickly as possible.
The latter topic is not covered at all — not even in the index, where a "quantum depth" entry would be useful. For those readers who are interested, "Q8" indicates 8 bits-per-pixel components, and "Q16" means 16 bits-per-pixel. The latter allows one to read or write 16-bit images without losing precision, but requires twice as much resources as Q8. Apparently Q16 is the best choice for medical or scientific images, or those with limited contrast. Otherwise, Q8 should be sufficient, and offers greater performance.
The material most likely to be read, referenced, and valued in this book, is the chapters devoted to explaining how to use ImageMagick for resizing, compressing, transforming, and drawing digital images. Most of these first-category chapters begin with a concise summary of the theory put into practice throughout the rest of the respective chapter — a wise inclusion in each case, since even the most experienced computer programmers and other users have had no instruction or experience in image theory. All of these chapters do a competent job of explaining what each ImageMagick command is used for, and then illustrating it with a straightforward example.
The most glaring deficiency in these chapters, and the book as a whole, is that far too many of the book's figures (digital images, naturally) fail to reflect what is intended to be conveyed by each figure. This is primarily because they are all in black-and-white, and in many cases do not offer the size and resolution necessary. In other words, there are many cases where the "before" and "after" images look almost identical. In the cases of color manipulation, most of those black-and-white images are of little value — occasionally laughably so.
The second-category chapters, covering ImageMagick usage with Perl, C, Ruby, and PHP, proved disappointing, primarily due to their narrow focus, and lack of tips, recommendations, and coverage of the APIs' capabilities. The details are presented in the form of a single example for each language. For instance, the Perl chapter devotes too many pages to source code listings of a Perl program written by the author, that few readers would probably download from the publisher's Web site, much less read.
Nonetheless, this book should be useful to any programmer interested in making the most of ImageMagick's capabilities, and that is not just because it is the only ImageMagick book on the market. Michael Still certainly had his work cut out for him when he agreed to document the bulk of what ImageMagick can do. It is unfortunate that the color images that he created for the book cannot be seen by the reader, and that the Windows binary versions and ImageMagick APIs, were given short shrift. We can hope that future editions of this book will be significantly strengthened, such as including color and higher resolution images where needed — even if it requires grouping them together within the book, if that reduces production costs.
Lastly, it should be mentioned that, as a smaller technical publisher, Apress is not resting on its laurels, and is not only scheduled to release an impressive variety of programming books this year, but their customer support — at least in my experience — was outstanding, as there was a problem with the shipping of this title, and they bent over backwards to make it right.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com."
You can purchase The Definitive Guide to ImageMagick from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
The author of this title is Michael Still, a programmer who gained experience with ImageMagick during his eight years of working on imaging applications, as well as writing articles on ImageMagick for IBM DeveloperWorks. Apress maintains a Web page for the title, where a visitor can purchase the electronic version of the book, read its table of contents, or download its source code or a sample chapter (Chapter 4 — Using Other ImageMagick Tools) in PDF format. They also have a link where readers can submit errata — and apparently be the first to do so, as there are no existing errata listed on the Web page.
The book's 335 pages are organized into a dozen chapters, following an introduction and a few other standard sections, including a forward written by ImageMagick's principal architect, Christy, who briefly explains the product's 20 years of history, development, and lack of decent documentation. That is where this book is intended to fill the gap, and Christy notes that most future questions about ImageMagick will be answered by pointing people to this book, as is also noted on ImageMagick's homepage.
The first chapter of the book explains how to install and configure ImageMagick, for several Linux distros, as well as Microsoft Windows — using the precompiled versions, or by compiling from ImageMagick's source code. The chapter is wrapped up with a brief description of ImageMagick's online help, debug output, verbose output, and version information. The next ten chapters fall into two categories: ImageMagick usage as a standalone, and from within other applications. The first category of chapters covers basic image manipulation, compression, other metadata, ImageMagick tools, artistic transformations, other image transformations, and drawing commands. The second category discusses how to utilize ImageMagick from within programs written in Perl, C, Ruby, and PHP. The 12th and final chapter is quite brief, and describes where to find online help (Web sites, blogs, mailing lists, and forums) and where to report any apparent bug in ImageMagick.
For Windows users, the first chapter may begin badly, as the author fails to explain which precompiled version the reader should select if they wish to install ImageMagick on a Windows PC. For each version, there are four flavors to choose from. But which one is right for the reader? "static" vs. "dll?" "Q16" vs. "Q8?" What are the differences? The ImageMagick Web site and FTP file listings appear to have no README file or installation help file to explain which flavor you should download. The book should provide some assistance here, but does not. The former topic, static versus DLL, is mentioned only in reference to compiling ImageMagick from source — information which the reader will probably never see, should they choose to install the precompiled binaries and get started on ImageMagick as quickly as possible.
The latter topic is not covered at all — not even in the index, where a "quantum depth" entry would be useful. For those readers who are interested, "Q8" indicates 8 bits-per-pixel components, and "Q16" means 16 bits-per-pixel. The latter allows one to read or write 16-bit images without losing precision, but requires twice as much resources as Q8. Apparently Q16 is the best choice for medical or scientific images, or those with limited contrast. Otherwise, Q8 should be sufficient, and offers greater performance.
The material most likely to be read, referenced, and valued in this book, is the chapters devoted to explaining how to use ImageMagick for resizing, compressing, transforming, and drawing digital images. Most of these first-category chapters begin with a concise summary of the theory put into practice throughout the rest of the respective chapter — a wise inclusion in each case, since even the most experienced computer programmers and other users have had no instruction or experience in image theory. All of these chapters do a competent job of explaining what each ImageMagick command is used for, and then illustrating it with a straightforward example.
The most glaring deficiency in these chapters, and the book as a whole, is that far too many of the book's figures (digital images, naturally) fail to reflect what is intended to be conveyed by each figure. This is primarily because they are all in black-and-white, and in many cases do not offer the size and resolution necessary. In other words, there are many cases where the "before" and "after" images look almost identical. In the cases of color manipulation, most of those black-and-white images are of little value — occasionally laughably so.
The second-category chapters, covering ImageMagick usage with Perl, C, Ruby, and PHP, proved disappointing, primarily due to their narrow focus, and lack of tips, recommendations, and coverage of the APIs' capabilities. The details are presented in the form of a single example for each language. For instance, the Perl chapter devotes too many pages to source code listings of a Perl program written by the author, that few readers would probably download from the publisher's Web site, much less read.
Nonetheless, this book should be useful to any programmer interested in making the most of ImageMagick's capabilities, and that is not just because it is the only ImageMagick book on the market. Michael Still certainly had his work cut out for him when he agreed to document the bulk of what ImageMagick can do. It is unfortunate that the color images that he created for the book cannot be seen by the reader, and that the Windows binary versions and ImageMagick APIs, were given short shrift. We can hope that future editions of this book will be significantly strengthened, such as including color and higher resolution images where needed — even if it requires grouping them together within the book, if that reduces production costs.
Lastly, it should be mentioned that, as a smaller technical publisher, Apress is not resting on its laurels, and is not only scheduled to release an impressive variety of programming books this year, but their customer support — at least in my experience — was outstanding, as there was a problem with the shipping of this title, and they bent over backwards to make it right.
Michael J. Ross is a freelance writer, computer consultant, and the editor of the free newsletter of PristinePlanet.com."
You can purchase The Definitive Guide to ImageMagick from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
Just create an action which does what you want, then you can export an "EXE" which takes as command line argument the file you want to process, and optionally, the output. Works like a charm.
It's a shame. ImageMagick offers some absolutely excellent tools but they have never made the leap into the mainstream. I think they are like a really good sys admin -- 'ick makes things look easy and trouble free. Furthermore the 'ick folks are busy making things work and the doc's reflect that; there is also frame of reference problem -- the developers are so deeply on the inside they can't imagine users NOT knowing how to do basic things and understanding the basics of image types. ImageMagick is an old project and it shows in the attitude toward providing user information.
Why would one need batch-sized automatic image editing? Although I can see one wanting to edit many pictures at a time, I think that you would still need to manually specify what you want done, and where. Unless you wanted to do almost identical edits to many different pictures (read: destalinization), then the application seems not to have much use.
Not only "land of the free" but "land of the lawyers" who love a good old 1st amendment smackdown. Shihar 153932
OS X's Automator lets you do much of the same thing with apps like Photoshop.
Imagemagick is good stuff, ive used it for a while now. Although I didn't buy a book to learn how, i just went here, for some great samples of uses:k 6/ d ex.htm
http://www.cit.gu.edu.au/~anthony/graphics/imagic
PIL isn't too shabby either http://www.pythonware.com/library/pil/handbook/in
Powerful stuff, maybe the book is not that great i don't know, but imagemagick and PIL are!
In other words, there are many cases where the "before" and "after" images look almost identical. In the cases of color manipulation, most of those black-and-white images are of little value -- occasionally laughably so.
Haha, that was funny...well if you need to see what it actually does, their examples site has some better images.
He who knows best knows how little he knows. - Thomas Jefferson
until I read the FA.
"The material most likely to be read, referenced, and valued in this book, is the chapters devoted to explaining how to use ImageMagick for resizing, compressing, transforming, and drawing digital images."
OK, I don't get the drawing part - but the rest seem amenable to batch processing.
GraphicConverter on the Mac has some fairly powerful built-in scripting/workflows you can specify for a whole bunch of photos at once. And, it's shareware too. Such as I've used it to all at one time for 100+ photos, perform an "auto levels", reduce the file size so they're easier to e-mail, and create a basic thumbnail Web-ready batch. You can do probably 100 or more tasks this way.
Batch processing images via the commandline isn't really a mainstream activity. ImageMagick is (ASAIK) widely used by the people and applications that need such a tool. I use it professionally and personally when I need such a tool.
You might as well say that weblog analysis tools are sliding towards obscurity because they aren't featured on the cover of LinuxNewbie Magazine.
I did some nice charts for the indi admin pages; worked out really nicely thanks to Gruff + RMagick.
I did have a spot of trouble getting the fonts working at first, but once that was fixed, it was easy to create some nice charts with very little code.
The Army reading list
Export an avi to a folder full of pngs, attack it with imagemagick and a few batch scripts and you have a substantial amount of functionality. It's easy to advance single frame just by opening your favorite image viewer and clicking through the directory, and tweaking a single frame to perfection is as easy as saying "open in gimp."
Or does this "freelance writer" have problems with grammar? (Especially conjugation!)
For what it's worth, Wikipedia uses ImageMagick to automatically resize png/jpeg/gif images for articles (eg. photos uploaded at 1920x1080 can be displayed at 300x169 in an article). So it's good enough to run on a high-traffic website (and is pretty flexible for ad-hoc command-line use too).
ImageMagick's function library is also accessible through a variety of APIs for your favorite language -- scripting or otherwise. If you haven't used it, try it . . . it's GPL and it Rawks (with a capital "r"). ;-)
Has anyone used both ImageMagick and Image Alchemy? How do they compare? I'd have a hard time getting through the day without Alchemy, but it doesn't seem to be actively developed anymore.
Save yourself some money by buying the book here: The Definitive Guide to ImageMagick. And if you use the "secret" A9.com discount, you can save an extra 1.57%!
Per info locate on their download page:
. php#windows
"The Windows version of ImageMagick is self-installing. Simply click on the appropriate version below and it will launch itself and ask you a few installation questions. Versions with Q8 in the name are 8 bits-per-pixel component, whereas, Q16 in the filename are 16 bits-per-pixel component. A Q16 version permits you to read or write 16-bit images without losing precision but requires twice as much resources as the Q8 version. Versions with dynamic in the filename include ImageMagick libraries as dynamic link libraries. If you are not sure which version is appropriate, choose ImageMagick-6.2.6-4-Q16-windows-dll.exe."
http://www.imagemagick.org/script/binary-releases
The web site does give some help.
Regards,
Anonymous Coward
My book, Flickr Hacks, contains a number of examples of using ImageMagick (via the Perl API) with Flickr. This is one area where it really shines. I used ImageMagick to create these mosaic posters, the Flickr Colr Pickr and other cool things.
ImageMagick's function library is also accessible through a variety of APIs for your favorite language -- scripting or otherwise. If you haven't used it, try it . . . it's GPL and it Rawks (with a capital "r"). ;-)
t oshop/sdk/PhotoshopScriptingGuide.pdf
While I use (and love) ImageMagick, it's worth noting that Photoshop has similar (but not totally analogous) capabilites:
http://partners.adobe.com/public/developer/en/pho
Unfortunately, Photoshop's scripting host only supports JavaScript, VBScript, and AppleScript. This is not the same thing as a Photoshop Action; scripting isn't as limited as Actions are: one can employ conditional logic, perform some basic file system operations, and transfer scripts easily.
I have been an imageMajick user for some years now I while I find it great for simple tasks and great for batch conversions it is no Photoshop. I think there is room for both. For simple image conversion or batch processing I use an Apple Automator action to call a do shell script. For others I drop into the terminal. For retouching or other tasks, it is Photoshop only.
My pictures are carefully composed and exposed. I set the whitebalance when I scan the negatives. Once the scanning is done, I run a batch job (over possibly hundreds of images) which opens each file (16 bit tiff), scales for printing at 12x18, 8x12, 8x10, 6x8, 5x7, and 4x6, saving as 100% quality jpeg, scales to 1024x768, 600x400, and 150x150, padding with borders if nescesary, rotating to portrait if nescesary (from a list), watermarks and signs them, and saves as 80% quality jpeg. This batch job can run while I sleep or do other things.
those interested in command line image processing, should check out netpbm too. it's really neat
instead of a single image processing program, netpbm is a massive collection of programs all using a small set of proprietery formats (they are all compatible with each other). you use pipes for communication between them, giving you some more flexibility.
for example:
pngtopnm foo.png | pnmscale -xsize=600 ysize=400 | pnmtojpeg > foo.jpg
the other advantage is, their proprietery formats were designed to be easy to use, so coding your own netpbm programs is much easier than rewriting imagemagick for a specific task.
ImageMagick is great, but if you work with less common formats or even those such as Maya's IFF, it doesn't help much (which is odd seeing as how Maya even installs ImageMagick's convert command renamed as imconvert).
l oad.html
There is another program called Nconvert that will handle pretty much any format you throw at it (about 400 in and 40 out). It can do much of what can be done with ImageMagick too, and is available for more than a dozen operating systems.
Unfortunately it's only free for non-commercial use, and 100 (or an agreement) otherwise.
http://perso.wanadoo.fr/pierre.g/xnview/en_ncdown
"The ImageMagick Web site and FTP file listings appear to have no README file or installation help file to explain which flavor you should download."
From http://www.imagemagick.com/www/binary-releases.htm l :
"The Windows version of ImageMagick is self-installing. Simply click on the appropriate version below and it will launch itself and ask you a few installation questions. Versions with Q8 in the name are 8 bits-per-pixel component, whereas, Q16 in the filename are 16 bits-per-pixel component. A Q16 version permits you to read or write 16-bit images without losing precision but requires twice as much resources as the Q8 version. Versions with dynamic in the filename include ImageMagick libraries as dynamic link libraries. If you are not sure which version is appropriate, choose ImageMagick-6.2.6-3-Q16-windows-dll.exe."
I know that its not a readme file but the website seems pretty explainatory. You are right about the FTP site, however.
For doing batch processing of photos I have been using Bibble Pro for Linux lately. I like it since it has good support for the raw format of my SLR and has a lot of batch processing features. For example, it's easy to select a group of 50 photos and adjust the white balance, or use the one click lens distortion fix on all my photos. Best of all, it runs under Linux. It gives me the best of both worlds. It gives me batch processing as well as the ability to individually make changes to each picture. I.e. I can bring out the shadows in a group of pictures, then straighten a couple of them if the camera was crooked and crop them as needed. It also does everything at 16 bits per color.
Now, granted, it does not run on the command line, but it easily lets me select a source and target directory to batch process as well as letting me select individual pictures. I can't really compare it with ImageMagick since I haven't used it directly.
-Aaron
This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
I've had an open bug on FlashPIX format (specifically the Kodak DC-265 version) in ImageMagick for FreeBSD for some time (probably in a 3rd party library). To bad nconvert won't do FlashPIX on *nix. If I have to use Windows, I might as well use Kodak's tool.
Hmm, I tend to find the approach of NetPBM easier to work with: having lots of separate utilities each doing a single simple thing and making it easy to use them together by piping the output of one to the next. Besides, reading/writing PBM files is trivial so you can very easily use these tools from your programs (by piping your image through them) or you can very easily create new filters that integrate well with the rest. I recommend you check out NetPBM.
If you need automatic processing of many images (the sort of thing ImageMagick is being praised for), I recommend you check it out.
Does the eBook version have color images? http://www.apress.com/book/bookDisplay.html?bID=10 052
Irfanview is good for batch conversions, I used it all last summer to resize and greyscale hundreds of photographseach week. At 1.24mb for the whole program folder, and the ability to read almost any type of image file and use photoshop filters I haven't found anything better for quick edits.
Since this subject has been brought up, I was wondering if anybody could offer some insight into this: I've been trying to get the Image:Size perl script to get the dimensions of a swf file. I've got it on a loop for a directory of files, and I need to pass Image::Size a variable which gives it the name of the file. After some headaches and research, I found that you can't pass it a (like this: $var) variable to give it a location. I heard this was an ImageMagick problem rather that Image::Size, yet there's all this talk of being a command line utility. Anybody have similar problems, or know of a workaround? Any example of what I'm looking to do can be found at my link in the arcade section (which the site doesn't seem to be working now for some reason...). Right now all the swf links have a default size which makes them look funny. Any insight would be appreciated. Thanks!
Horses for Courses. When you need to touch up one image, use Photoshop. When you need to dust-bust hundreds of images, use CinePaint. When you need to rotate, scale, composite, and convert hundreds or thousands of images, use ImageMagick (via PerlMagick or your favourite scripting language).
Similarly, excel is not a database management system, and Abiword is not a desktop publishing suite.
Yes its true - you can script things with javascript in photoshop and it is every bit as impressive as imagemagik.
LMAO! Funniest of the day.
BTW, its already March in rest of the world. But well, Michigan has never been known to be with the rest of the world.
I dunno why, but I switched from using image magick to using graphics magick. It may be faster. It seems compatible.
Please, the word is Foreword, not "Forward". I don't want to be a grammar nazi, but I've seen this particular word substitution so often that Im afraid we're getting near the point where the sheer quantity of errors is going to confuse everybody. Heck, sometimes I think I'm wrong about this...I've actually seen books that have a section in front called "Forward".
Great men are almost always bad men--Lord Acton's Corollary
My company uses image magick to resize and add watermarks to tens of thousands of website classified images. We created several wrapper methods to access it in our app.
, 200);
Poor Example:
myImage1 = imageMagickResize(thisImage.jpg,destImage.jpg,300
AFAIK it is more extensive than alot of the native image manipulation libs that come with certain languages (java?). Comparing imageMagick to photoshop or other apps is apples to oranges. We have this running on headless FreeBSD and CentOS boxes with no X. Can't do that with photoshop!
We used imagemagick for a while for basic resizing/cropping/thumbnailling but switched to PHP5 w/ GD due to portability concerns. ImageMagick is often not installed on systems and unless you run your own box, it takes teeth pulling to get hosts to install any software they aren't familiar with.
If it weren't for the fact that it discards 86% of the input data, it'd be pretty useful. Seriously, though, I'd love to find out that I'm wrong. It seems much faster than ImageMagick for certain operations and I'd like to give it a real test.
Dewey, what part of this looks like authorities should be involved?
Its called matlab
What I've really wanted, but not yet found, is some way to programmatically (or from command line) take a series of JPGs (1,000 to 50,000) and create a movie out of them. I've got Quicktime Pro, but it doesn't have command line ways of doing this (and it bogs down horribly when manually loading an image series and saving out a movie).
I do use ImageMagick (actually GraphicsMagick I think) to watermark/timestamp each of the JPGs before I make the movie, but surely there's a way to fully automate what I'm doing...
.sigs are for post^Hers.
From the man page:
mencoder "mf://*.jpg" -mf fps=25 -o output.avi -ovc lavc -lavcopts vcodec=mpeg4
Though xvid codec or x264 gives better results then lavc-mpeg4.
I like using ImageMagick...but its scale feature doesn't look as good as when I use Gimp (or Photoshop for that matter). Why is that? There is a huge quality difference to my eyes when I put a picture scaled with Gimp next to one with ImageMagick. Am I doing something wrong? =/ Random_Amber
It's ImageMaaagick!!!!
ImageMacgick > Photoshop
The Rapture is NOT an exit strategy.
I tend to agree with these remarks but they should have been worded differently.
When I used ImageMagick and PerlMagick regularly (some 5 years ago), like you I found
ImageMagick lacking in user friendliness, but I feel it is the result of lacking development resources.
In essence IM is very much like similar libraries such as netpnm and GD: it has its own internal image format,
a slowly-but-ever increasing range of image processing functions that operate on that format,
an a slowly-but-ever range of format converters that read and writing images in various formats,
sometimes by means of external executables such as Ghostscript or the netpnm utilities.
One difference with GD or netpnm is that ImageMagick doesn't separate its input filters, output filters
and image manipulation functions out into separate executables. It implements them as options instead:
executables such as convert and mogrify can use pretty much every input filter, output filter and image
manipulation function that the library supports, by the appropriate selection of filename extensions
and/or command line options. This is "not the Unix way". It is also a terrible hindrance to proper
documentation: with 10 netpnm executables in a pipe that all execute a single manipulation, I know
immediately what is going on by reading the man page of each of them, but when I want to combine 20
IM convert options, the convert manpage gives me very little information on how their effects will be combioned.
But a more significant difference is that the GD and netpnm authors stopped development at some point,
leaving us with a finished set of utilities the exact operation of which is known.
ImageMagick always felt to me like an eternal work in progress, propelled by small, incremental steps
that gradually incorporate more and more image processing functionality, but with little attention to other issues.
As I recall it, the interface kept growing options without ever becoming more organized.
Performance was terrible and might change from version to version (but IM was always a terrible memory pig).
As you mentioned, there was no real documentation (which the author was the first person to acknowledge).
And the worst, as far as I'm concerned: compatibility would sometimes break; the exact syntax or semantics of options
might change from verison to version, so I'd sometimes have to change my PerlMagick calls (in undocumented ways) and
require specific ImageMagick versions installed in order to keep my applications going.
These are not signs of user hostility but rather of a lack of effort in user interface design. A CLI is a user interface
and convert(1)s is just about the worst I've ever seen. PerlMagick's library call interface isn't much better. This is because
IM just grew functionality, feature by feature, and never saw a focused design effort to present all that functionality
in a way that would be maximally useful and clear to end users, let alone that it would define a clear organization for
these interfaces and guarantee their compatibility. But the development effort spent on IM is very small so I don't think
you can blame any one of the developers for this problem.
I wish that GIMP could be operated from the command line. At least currently, it is heavily tied to X for stuff like font rendering.
Which is kinda irritating, because I can think of a lot of times where I know exactly how to do something with GIMP, but just wish that I had an easy-to-use-as-a-backend system that could do the same thing.
Any program relying on (nontrivial) preemptive multithreading will be buggy.
It has been awhile, but I think the -scale option forces a lower quality resize due to the filter used. Try using the -resize option instead. And you can force a specific filter with the -filter option, like so..
convert -filter cubic -resize 100x100 input.jpg output.jpg
Vote for global prefs bug
If you wish to write your own programs using a powerful image-processing library, you will, most likely, prefer the fork of ImageMagick called GraphicsMagick.
In Soviet Washington the swamp drains you.
I've written apps using it, only to find out that the latest version no longer works.
You're a developer and you don't save the source code? Maybe you should learn to keep a downloads directory like everybody else does. It's called backups my friend.
While it's true that ImageMagick isn't licensed under the GPL, I hope nobody comes away thinking that licensing under the GPL precludes commercial distribution or incorporation into a commercial program. That's never been the case.
Being licensed under the GNU General Public License doesn't preclude use in commercial software. In fact, many GPL-covered programs are commercially distributed and some even have remarkably lucrative consultancies developing them (such as GCC).
Furthermore, one can build on GPL-covered programs in other programs (even proprietary programs) because it all depends on how the GPL'd program is called.
Digital Citizen