@Rowland, I use both windows and linux ... so anything non mac specific should work.
–
Sam SaffronOct 27 '10 at 21:03

Where are your pictures stored and where are you likely to need the conversion? Windows or Linux? That would make some slight difference. Are you ok with deleting all the existing pictures before creating new ones? Should it be creating a new folder structure as it duplicates?
–
jcolebrandOct 28 '10 at 22:58

@drchenstern ... I would like to avoid double processing a file
–
Sam SaffronOct 28 '10 at 23:15

~ Is that only because of the desire to reduce time to process? I'm thinking that using some sort of linux based system will work out better in the long run because of the command-line image manipulation activities that are already written for Linux systems.
–
jcolebrandOct 28 '10 at 23:23

8 Answers
8

ImageMagick would be an obvious possibility for the scaling itself. Scheduling a search for new pictures and creating a scaled copy of each isn't built into it though. Most OSes have scheduling capability that could run it though. As a programmer, one thing I'd probably consider would be to use a makefile to handle running the conversion only when a target didn't exist. Most normal people would consider that a really strange way to do things though...

On Windows, Irfanview is another free image viewer which has a good batch resizing/resampling mode.

From a quality POV, you should be interested in the resampling algorithms that your chosen tool uses. Irfanview provides control over, and the choice of, quite a number of high quality resampling algorithms, and the later versions also provide control over sharpening of your resampled images.

Sharpening is important since resizing pictures to make them smaller tends to make the images softer.

XnView is probably the answer, as long as you either use a scheduler or manually run it on a regular basis. Personally, I use my own scripting which runs nconvert to do this exact thing. Nconvert comes with XnView and is also available separately.

XnView is extremely powerful for batch conversion, it even can apply transformations during the process. Most importantly after you set up your conversion between certain directories, you can ask it to output a batch file that does the same conversion. This will come in very handy if you want to add this to a task scheduler or cron job.

Picasa will allow you to batch resize your photos, and it's free. You can select a bunch of images to export, then choose the desired dimensions and location. It will then save a copy of all the images you selected in the new size. The location can be another folder, or even the web.

I've been solving the exact same problem (having a low-res copy of my images for laptop) and wrote Python script called thumbtree. It basically creates a copy of directory with scaled down version of all the files. It uses ImageMagick to do the resizing and checks timestamps to scale only the files which have changed since the low-res copy was made.

I usually use ImageMagick or GraphicsMagick (less features, but faster, not always the same result). The Linux way to schedule this processing is to write a script and put it in the crontab. To reduce time to run you can select only the new photos with find. If you need help in writing such a script, please ask. I can help with that.

As a Linux user I also use Nautilus Image Converter. On Ubuntu/Debian you can install it with nautilus-image-converter package. It adds a resize option in the file manager context menu. I suppose it uses ImageMagick internally.

Some other Linux options are:

Gimp Batch Processor (a plugin to do bulk processing in Gimp, has a graphical user interface, part of the gimp-plugin-registry package on Ubuntu) (see also a mini-tutorial)

Batch Queue in digiKam (a fairly advance tool for bulk processing, with graphical interface, it's nice if you are already a digiKam user)