I have a very large collection of images in a bunch of nested folders.

I would like to run some sort of process (on a regular basis) that will sync all the images to another place in a new smaller size. (I would like to restrict both height an width)

This will allow me to carry all my images around with me in lower res on my portable devices.

Any suggestions for a tool that I could schedule (ideally I would like it only to process each image once)?

  • 4
    what operating system(s) are you interested in? Oct 27 '10 at 7:28
  • @Rowland, I use both windows and linux ... so anything non mac specific should work. Oct 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?
    – jcolebrand
    Oct 28 '10 at 22:58
  • @drchenstern ... I would like to avoid double processing a file Oct 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.
    – jcolebrand
    Oct 28 '10 at 23:23

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...

  • I have been tempted to write a ruby script for this ... but if something already exists, I would prefer just to use that Oct 27 '10 at 4:36
  • @Sam Saffron ~ Any reason for a ruby script? Will this be hosted on a website? This is the sort of thing best run through cron I would think...
    – jcolebrand
    Oct 28 '10 at 23:28

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.

  • For manual uses, Irfanview batch rocks on windows and you can use gThumb on linux.
    – Xeoncross
    Nov 1 '10 at 18:28

FastStone it's free and simple, and it can little bit more then just re-sizing.


  • +1 for FastStone, an excellent Image Viewer and very complete image resizer. Oct 27 '10 at 14:28

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'm not sure it offers scheduling, but the overhead in running the above process is very small - it's really just a few clicks.

It has some other great features you might find useful, definitely worth checking out.


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)
  • Gimp Batch Mode (extremely flexible, but requires some programming in Scheme; suitable for scheduled processing)

I've had very good results with digikam and the resize plugin in Ubuntu. http://www.digikam.org/plugins.html#p5

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.