I just added support for PIL (Python Imaging Library, for those living in a cave) images to imshow(). This was acheived largely through the creation of a pil_to_array() function in image.py, which may be useful for other purposes. I've tested the code with numarray and Numeric and several image types and checked it into CVS this morning.
This code does not add a dependency on PIL to matplotlib -- it merely uses PIL object attributes if they happen to get passed in. (I think it's important to keep matplotlib's dependency list from growing without reason.)
I would like to test the pil_to_array() function for the case of >8-bit per channel images that (IIRC) PIL supports. If anyone has such images, could they either 1) send one to me or 2) run them through pil_to_array() and fix it?
Note that *display* of such high dynamic range will currently only be possible with single channel data passed through a colormap because the matplotlib's _image.cpp uses 8 bits per channel. (Not that anyone's display device is likely to make use of this information -- and if you have such a device, I'd love to hear about it!)