good chemistry is complicated,
and a little bit messy -LW
Graphics Programming with Perlby marvell (Pilgrim)
|on Aug 02, 2002 at 13:18 UTC||Need Help??|
Item Description: Modules, tools and techniques.
Review Synopsis: A great book for new perl graphics programmers.
My expectations before reading this book were that it would contain a few basics about graphics, some useful libraries from CPAN, a suite of examples and a whole world of pictures. Having been quite disappointed with O'Reilly's Programming Web Graphics with Perl & GNU Software, now some years out of date, I was not sure there was enough perl graphics code around to warrant an entire book. I could not have been more wrong.
I don't know where to start saying how much I liked this book, so I'm going to start at the beginning. Martien lays out the rules; this book is going to cover these things, and it's not going to covers these. Before buying the book, read "Who Should Read This Book", because it's very accurate.
Part one of the book covers the foundations of graphics; colour, drawing primitives, and the like. Martien show in the first chapter, whilst discussing colour spaces, just how well balanced the book is. By not limiting the discussion to RGB, CMYK and HSV, the proved that there was more to know. By including YUC, YIQ, etc., he proved he'd not missed anything important. From reading this section alone, you realise that you're going to get as much as you need, and be confident that large chunks of important stuff are not missing.
Again, the chapter on graphics file formats gave a good chunk of detail on the more popular formats, whilst touching on the more obscure. He could have done the lot, but then, the reader doesn't want that from this book. Good balance again.
Part 2 is the meat of the book. This is where we learn about graphics creation with starting with Image Magick and GD. Much more than a dump of the manual pages, this is a well presented section with tons of annotated code examples, comparisons and explanations. Even though I've done this stuff before, it really was a great learning tool, sorting out all the loose ends. The drawing chapter ends with a bit about Gnuplot output, and a bit about why postscript and SVG are not in the book. I would never have expected them to be really, being such big subjects.
Moving on to graphs and charts, probably the most functional bit of graphics we're likely to see on the web, and a great balance of GD, Chart, PGPLOT and Gnuplot. Again, good examples, thorough explanations and nothing missed.
In the Web Graphics chapter, we get some solid advice to do with colour maps and the basics of CGI followed by a huge set of different examples giving the reader a wealth of information. The photo album example did seem a tad long though.
A quick chapter on animation gives the file formats and basic techniques. This chapter touches on Gimp, but you can't really expect a book like this to much further.
Next comes imagine combination. I learnt a lot here including watermarking. I used a few of the techniques from this chapter in my last web project too.
The chapter on 3D graphics was ambitious and slightly boggling. Even though I've done a lot of this 3D lark, I still got lost in the OpenGL section. I think it's probably quite a large subject. In it's defence it's probably a brilliant chapter for people who know the technology and just need to pick up the perl interface.
Part 3, Special Topics, covers a few of the graphics topics that have many caveats, like text placement and transparency. A superb read and another advert for how much the author really does know. Worth reading all the way through.
The book ends with some useful documentation and a couple of colour space conversion algorithms and the suite of references.
In summary, this book is bloody brilliant.
Steve Marvell is the Proprietor of an IT Solutions Provider based in the South West of England and runs the Devon and Cornwall Perl Mongers.
This review may be used, in full, including this message, by anyone, but may not be edited without the author's permission.