++ed by:

32 PAUSE users
18 non-PAUSE users.

Arnar Mar Hrafnkelsson

Changes for version 0.38

  • Added lots of color quantization code from Tony with benchmarks.
  • Also fixes ugly stack overrun in old version. Added fixes for the lmfixed problem. Four of them, let's see which is fastest. This version adds some voronoi partitioning - it's dog slow but it's a reference implementation to check if faster algorithms are doing the right thing [tm]. Added a check for giflib 3.
  • Win32 support for libpng
  • fixed set_internal creating 2 refs to one object
  • Win32 support for jpeg
  • Win32 support for tiff
  • base level error reporting code added, I still need to modify older code to use it
  • fix translate=>'giflib' handling of single-colour images. Previously a single colour image would cause an error in MakeMapObject().
  • fix t/t10formats.t tests against giflib3
  • added test for transparent gifs
  • minor doc fixes for transparent gifs
  • make it less error-prone to write transparent gifs
  • documented the options for reading raw images
  • Changes switched to use spaces for formatting
  • switch gif.c to new error reporting with related changes to Imager.xs, Imager.pm
  • each of the image formats now have their own test file, extracted from t10formats.t, usually with som extra tests
  • Added flip() and docs to Imager.pm and i_flipxy to image.c. Added testcases too.
  • Fixed an overflow bug in png.c
  • added the colors parameter to Imager::read() which receives the arrayref of colours that i_readgif(_scalar) returns
  • fixed a problem in makemap_addi in quant.c where only the first image was compared against the palette when the palette was being refined. I screwed up on this originally (TC). This is the other half of a fix for Leolo's lmfixed problem <sigh>.
  • makemap_addi() now only puts colours into the palette that it found while optimizing the palette (so we don't get 256 colour palettes for 2 colour images :)
  • initial implementation of a row-based interface to low-level images (for performance)
  • changed Imager::read() for GIF so that the arrayref pointed to by the ref supplied in colors contains Imager::Color objects instead of more arrayrefs, keep this interface stable until we can make an informed choice about i_readgif()
  • incorporated Micksa's faxable tiff support, treating as a type of tiff rather than a separate format
  • t/t70newgif.t now checks for gif support
  • added the convert() method
  • Added support for transparent to alpha conversion during loading of png files. Note that libpng 1.0.1 is broken in handling this, we know that 1.0.5 works.
  • support for writing PGM (portable gray map) files
  • Fix for i_gifread_low() for images with only a local and no global colormap and an abort if no colormap is present (which is legal in gif).
  • several fixes to i_readgif_low()
  • Fixed crop() method so that it is consistent with documentation.
  • make clean now removes the testout directory
  • added tests for the OO interface for tiff, added an option to choose the resolution for fax tiffs, removed some unused code, fixed minor problems with Imager::write() handling of image types
  • changed README note on libgif bug to refer to t105gif.t instead of t10formats.t
  • For latest versions check the Imager-devel pages: http://www.eecs.umich.edu/~addi/perl/Imager/devel/


  • Imager::regmach - documents the register virtual machine used by Imager::transform2().


  • Imager - Perl extension for Generating 24 bit Images
  • Imager::Color - Color handling for Imager.
  • Imager::Expr - implements expression parsing and compilation for the expression evaluation engine used by Imager::transform2()
  • Imager::Expr::Assem - an assembler for producing code for the Imager register machine
  • Imager::Font - Font handling for Imager.
  • Imager::Regops - generated information about the register based VM
  • Imager::Transform - a library of register machine image transformations