The Definitive Guide to ImageMagick 173
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.
ImageMagick is good stuff. (Score:5, Informative)
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!
Better image examples online (Score:4, Informative)
Haha, that was funny...well if you need to see what it actually does, their examples site [imagemagick.org] has some better images.
Re:Manual vs. Automatic (Score:5, Informative)
GraphicConverter (Score:3, Informative)
Re:Manual vs. Automatic (Score:3, Informative)
Re:yes, you can command line photoshop (Score:3, Informative)
Re:Manual vs. Automatic (Score:5, Informative)
Examples of edits that don't need to be manual: Thumbnails. Resizing. Addition of timestamps/watermarks/copyright info. Conversion to other formats. Motion detection. Mosaics. Proof sheets.
Gentle readers: just because something doesn't seem useful or make sense to you does not mean that it is categorically useless or senseless for everyone.
ImageMagick + Rails == good (Score:5, Informative)
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.
Re:i had that same question (Score:3, Informative)
Re:yes, you can command line photoshop (Score:5, Informative)
I've batch-processed sets comprising about 2,500–4,000 images (greyscale GIFs) both with command-line tools and with Photoshop CS. On each occasion, Photoshop took several hours longer than the specialized CLI apps to complete the jobs. The difference is even more dramatic when executing Photoshop Actions from within Photoshop, since the screen updates further increase processing time (an effect only slightly mitigated by hiding subwindows).
Re:Manual vs. Automatic (Score:4, Informative)
How do you think flickr makes perfect square thumbnails automatically?
convert in.jpg -thumbnail x200 -resize '200x' -resize 50% -gravity center -crop 100x100+0+0 +repage out.jpg
Any website that takes a user-uploaded photo needs to do something to it. From thumbnails to capping the image size.
Wikipedia uses it (Score:5, Informative)
Not just for command line use! (Score:4, Informative)
Re:yes, you can command line photoshop (Score:5, Informative)
for i in *jpg; do
convert -sample 25%x25% "$i" "thumb-$i"
done
works perfectly with any special characters, including spaces and newlines, in the filename
Re:ImageMagick + Rails == good (Score:3, Informative)
I am a photographer... (Score:3, Informative)
check out netpbm too (Score:3, Informative)
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.
Re:Manual vs. Automatic (Score:4, Informative)
Re:yes, you can command line photoshop (Score:3, Informative)
The MSC driver can hard lock (requireng removal of the USB device).
If the problem happens no matter where you locate the images (local hd) then it've got no clue what your problem is. but from the sounds of it you've been using IM to parse pics from your cmaera directly to some local folder, likely the new camaera has faster memory that causes the MSC lock up issue (it does not happen with slower/older devices)
Which Precompiled Windows Version? (Score:3, Informative)
"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 [imagemagick.com] :
"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.
Batch processing (Score:3, Informative)
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
Re:yes, you can command line photoshop (Score:3, Informative)
NetPBM (Score:3, Informative)
If you need automatic processing of many images (the sort of thing ImageMagick is being praised for), I recommend you check it out.
ImageMagick is excellent (Score:2, Informative)
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!
Re:yes, you can command line photoshop (Score:2, Informative)
And I don't think Adobe would disagree with you. For large-scale image processing (including the ability to alter a Photoshop text layer dynamically), there is the Adobe Graphics Server (see http://www.adobe.com/products/server/graphics/mai
It isn't cheap ($7500 per CPU, with a 2-CPU minimum I think). And it is only supported on Windows Server versions and Solaris. But it's the only product that I'm aware of that will do things with Photoshop-specific elements (layers, text layers, support for PDF or EPS, clipping paths & vector masks, etc.)
Many of the big Content Management and Digital Asset Management make use of it (including the company that I work for) (see http://www.adobe.com/products/server/graphics/par
Re:Wikipedia uses it (Score:4, Informative)
I just wanted to make sure people didn't think ImageMagick is being called upon the MediaWiki software every time the image got a page hit.
Re:photoshop also has javascript interface (Score:2, Informative)
It's a significant difference.
Further, I can download and build imagemagick from source on any of the various machines I have in my posession that I run NetBSD on. The Adobe product is binary only for two fairly limiting platforms.
Fix: ImageMagick doesn't scale as well as Gimp? (Score:2, Informative)
convert -filter cubic -resize 100x100 input.jpg output.jpg