I'm finding that I do in fact miss the power of even 2.8 ghz runnning on this laptop. (several cores would be nice.) Turns out, at 486 mhz, scaling an image properly actually takes a good bit of time. You can use the naive method (I believe this is what a usual paint program will do, I don't know about photoshop.) The naive method, of course, removes n out of every x pixels, where you are trying to scale by n/x pixels:
A better method, on the other hand, divides the image into regions based on the number of pixels it will have when it's done scaling. Then, it will average each group of pixels, and use the result. At least, that's what I would do if I had to do it from scratch.
ImageMagick's 'convert -sample
%' option (the naive method) takes two seconds, while convert -scale % takes 11 seconds.
On my machine in my room at home, I would expect the extra time spent averaging would be unnoticable (it's only 5 times as much for this input.) On this laptop, it's quite a bit of time.
Sampling is O(n) with respect to the number of pixels in the finished image, averaging is O(n) with respect to the number of pixels in the original image. When you're going from 3000x2000 to 800x600, that's obviously significant. Though the image is much cleaner, especially when you're scaling down even further. Here are some examples:
convert -sample 10% images/2009/01/cesar.jpg images/2009/01/cesar_sample_10pct.jpg
convert -scale 10% images/2009/01/cesar.jpg images/2009/01/cesar_scale_10pct.jpg
convert -scale 50% images/2009/01/cesar.jpg images/2009/01/cesar_scale_50pct.jpg
convert -sample 50% images/2009/01/cesar.jpg images/2009/01/cesar_sample_50pct.jpg