It would be very useful to have an ImageReader subclass which will cache images as it finds them. This would be useful for the following use-cases:
A user wants to create a photomosaic from a Flickr search for "dogs". He grabs 4000 images from Flickr, because he wants a very high-quality mosaic. Unfortunately, he realizes after the mosaic is generated that he would like a higher resolution mosaic. He does another search for "dogs", and finds that this time the query is much faster, as the tiles have been cached.
The same case should apply to local images as well. A user might want to create a photmosaic from a directory of high-resolution digital images. The first read will take a very long time, as each image will need to be read into memory entirely, and then cropped and scaled. Subsequent reads shouldn't duplicate this work, but instead use the cached results.