Image::Magick::Iterator - sequentially read Image::Magick object from a filehandle. |
Image::Magick::Iterator - sequentially read Image::Magick object from a filehandle.
use strict; use Image::Magick::Iterator;
my $iter = Image::Magick::Iterator->new();
#assume PPM stream is coming from STDIN; $iter->handle(\*STDIN);
#explicitly set format to PPM, there is no auto-detection built in $iter->format('PPM');
while(my $image = $iter->next){ print $image->Get('height'),"\n"; #access height attribute of each #Image::Magick object }
Image::Magick::Iterator adds iteration support to Image::Magick. This means that if you have a stream of concatenated images, you can access each image in the stream as an independent Image::Magick object.
Iteration functionality is not present in
Image::Magick itself as of version 5.56. Passing a
stream of concatenated images would result in essentially a ``stack'' of
images which would all be manipulated in parallel by any
Image::Magick calls. Calls to Write()
either output
an animated series of image (a la animated GIFs), or the first image
in the series.
Image::Magick::Iterator is extensible to support many different image filetypes. Currently only PPM support is implemented. See /SYNOPSIS for an example.
Currently only PPM images can be iterated. It's not difficult to add new image types though, and I'm receptive to new classes for handling more formats. To add another format:
1. Have a look at the source of Image::Magick::Iterator::PPM to get an idea of how to write a new format handling class. It is basically a class with one method, read_image, that when given a filehandle reference reads an image from it and passes back the raw data.
2. add a mapping to _delegate() that maps the desired value of format() to your image reading class.
Email the author.
Allen Day <allenday@ucla.edu>
Copyright (C) 2004 by Allen Day, allenday@ucla.edu
This library is released under GPL, the GNU General Public License
The rest of the documentation details each of the object methods. Internal methods are usually preceded with a '_'. Methods are in alphabetical order for the most part.
new()
my $obj = new Image::Magick::Iterator();
init()
$obj->init(%arg);
format()
$obj->format(); #get existing value
$obj->format($newval); #set new value
* PPM
handle()
$obj->handle(); #get existing value
$obj->handle($newval); #set new value
next()
$obj->next(); #get next Image::Magick from stream
_delegate()
$obj->_delegate($format);
Image::Magick::Iterator - sequentially read Image::Magick object from a filehandle. |