As Joonas mentions in his comment, Gimp and Irfanview have both batch processing tools.
Batch processing in Gimp (source)
GIMP comes with a so-called batch mode that allows you to do image processing from the command line. It also makes it easy to apply the same set of operations to a number of images.
gimp -b -
will tell GIMP to start in batch mode and accept commands on the command-line. Here's an example of a script that takes a filename and some numeric parameters. It opens the respective file, applies the Unsharp Mask filter and saves the image again:
(define (simple-unsharp-mask filename
radius
amount
threshold)
(let* ((image (car (gimp-file-load RUN-NONINTERACTIVE filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(plug-in-unsharp-mask RUN-NONINTERACTIVE
image drawable radius amount threshold)
(gimp-file-save RUN-NONINTERACTIVE image drawable filename filename)
(gimp-image-delete image)))
Processing several files
You might want to apply an effect to a number of files, typically to a set of files in the same directory. GIMP 2.2 added a very useful function for this purpose, the file-glob plug-in. This turns GIMP into a versatile batch processor. In order to use it, we will need to do some modifications to our script:
(define (batch-unsharp-mask pattern
radius
amount
threshold)
(let* ((filelist (cadr (file-glob pattern 1))))
(while (not (null? filelist))
(let* ((filename (car filelist))
(image (car (gimp-file-load RUN-NONINTERACTIVE
filename filename)))
(drawable (car (gimp-image-get-active-layer image))))
(plug-in-unsharp-mask RUN-NONINTERACTIVE
image drawable radius amount threshold)
(gimp-file-save RUN-NONINTERACTIVE
image drawable filename filename)
(gimp-image-delete image))
(set! filelist (cdr filelist)))))
This version of the script takes a glob pattern instead of a filename and will apply the Unsharp Mask filter to all files matching this pattern.
Batch Resize Images with IrfanView (source)
Start up “IrfanView Thumbails”, and browse to the folder that contains the images you wish to resize.
Once you see previews of your images in the right-hand pane, select them all by holding CTRL and pressing A. Once your images are selected, start the batch configuration dialog by clicking File → Start batch dialog with selected files.
At this point, you should see the Batch Conversion dialog window. Using this screen, you will select the location in which to save the thumbnails, input the maximum size of each thumbnail, and enter the quality of the resulting images.
Under “Output directory for result files”, click on the “Browse” button and choose a folder in which to save the resized thumbails.
Under “Batch Conversion Settings”, click on the “Options” button in order to set the quality of the resized images.
Next, click the “Advanced” button. Using the resulting dialog window, input the size to which you wish to resize your images. Hit “OK” and returned to the batch conversion dialog.
If you made it through all those input fields and check boxes, it is now time to run your batch and resize your images. Click the “Start Batch” button and watch IrfanView go to work.