The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
This is a bare-bones graphics library.  It is intended for a few
simple tasks:

1) Load a graphics file and return the image as a width, height, and 
   unsigned char array of RGB values.  Here's the prototype:
   int read_image(char *filename, int *width, int *height, 
		  unsigned char **rgb);

2) Resize an image supplied as a width, height, and unsigned char
   array of RGB values to a new width and height.  Here's the
   prototype: 
   int resize_image(unsigned char **rgb, int in_width, int in_height, 
                    int out_width, int out_height, int bilinear);
   If bilinear is 1, resize_image will use bilinear interpolation when
   scaling the image.  If bilinear is 0, resize_image will use the
   nearest_neighbor method when scaling the image.  This is much
   faster and frequently good enough.

3) Save an image supplied as a width, height, and unsigned char
   array of RGB values to a graphics file.  Here's the prototype:
   int write_image(char *filename, int width, int height, 
                   unsigned char *rgb);

4) Crop an image.  Here's the prototype:
   int crop_image(unsigned char **rgb, int in_width, int in_height,
                  int x, int y, int width, int height);

5) Delete an image.  This frees the memory allocated by
   read_image_file and resize_image.  Here's the prototype:
   int delete_image(unsigned char **rgb);

Currently the file formats supported are GIF, JPEG, PNG, PNM, and
TIFF.  Writing of BMP images works on little-endian machines.  It
works well enough for Xplanet, but I really wouldn't use it for
anything else.



Hari Nair
hari@alumni.caltech.edu