The objective here is to give the caller control over the order in which
image scaling occurs. In particular, by loading an image once and
generating the required scaled versions, we can potentially save a lot
of memory, which is a significant factor when dealing with full-size
DSLR images.