ACDSee alternatives for batch editing images

I am looking for free, preferably open, alternatives to ACDSee for batch editing work. While I can do much of the work well on ACDSee, it's not entirely satisfactory despite having to pay for it. I need at least the following batch editing functions:

  • Resize using either height or width while maintaining aspect ratio
  • Auto contrast
  • text overlays
  • and occasionally, cropping
  • oh, I make extensive use of renaming features as well

Couple of issues with ACDSee are: I always need to highlight the Exposure section or auto contrast will not be done despite it being saved in the preset; and I can't define, move around the cropping box, forcing me to manually crop tons of images.

I'm not an advanced, or "power photo-editor". I only require the basic stuff I described to be automated. My personal feature wish list (I'm pretty sure something so niche doesn't exist) would be text overlay based on the image names (images are named as image-1_1, image-1_2 or image-2_c1_1, image-2_c1_2, and text overlay would Image-1 and Image-2 C1 and Image-2 C2).

I tried digiKam, but damn that thing is huge. It runs very slowly on my Pentium 4 and 1.5 GB RAM. On top of being a program with over 1 GB of files, the KDE library it uses is always slow regardless of it running on either Windows or Linux.


Solution 1:

If you're not afraid of typing commands and learning some very basic shell scripting, ImageMagick is a immensely powerful command-line driven open source suite to manipulate pictures available also for Windows. With it you can, among other things, do just what you asked:

  • Resize can be done in plenty of manners: http://www.imagemagick.org/Usage/resize/
  • For auto contrast, the "normalize" option should do: http://www.imagemagick.org/Usage/color_mods/#normalize . For all the color modification options please see the rest of the same page.
  • Text overlay can be done in a plenty of ways too: http://www.imagemagick.org/Usage/annotating/
  • You can crop (and border) images as documented here: http://www.imagemagick.org/Usage/crop/
  • With the mogrify and convert commands (included in the ImageMagick suite) you can also rename files.

It is available on Linux and Mac too, so if you'll ever switch you will find the same tools everywhere.

Solution 2:

I agree with @Anal that ImageMagick is the basic tool that you need.

However, I wanted to add a couple of tools that I use for batch renaming. When importing loads of images from cameras, I like to rename to a specific format

2007-05-30 13-24-05-Canon PowerShot A720 IS.jpg

Which allows me to have folders with shots from several cameras taken at the same time without clashes.

To do this, I use 2 tools:

  • jhead
  • exiftool

I use jhead for most of the renaming tasks for standard images but it doesn't work well with Nikon RAW and some video formats, exiftool is used for that.

Using these, I can rename based on the embedded timestamp & camera type and I can also set standard IPTC fields such as by-line and copyright if I want to.

I use a shell script to do all of the repetitive donkey work.

These tools & ImageMagick are also cross platform if needed on Linux & Windows. I tend to use them via Cygwin on Windows but only because it allows me to use the shell script. You could just as easily do it all with a Windows command batch script or even get clever with an HTML Application script (.HTA) which could give you a GUI very easily.

Here is a snippet of the script:

case $1 in
    --help|-h|-?)
    echo ' '
    echo 'Rename a folder full of files to match the date/time taken and the camera model:'
    echo '  "IMG_0001.jpg"   ==>   "2007-05-30 13-24-05-Canon PowerShot A720 IS.jpg"'
    echo '  Adds a letter to end of name if the result is not unique'
    echo ' '
    echo 'Please use as:'
    echo '  rename.sh folderName [t]'
    echo 'Where:'
    echo '  folderName is absolute or relative to current folder'
    echo '  t, if present prints the command that would be used'
    echo ' '
    echo 'Requirements:'
    echo '  1) jhead (detects camera type)'
    echo '  2) exiftool (renames non-jpg files)'
    echo ' '
    echo 'Use the following workflow:'
    echo '  1) Copy files and folders from the camera(s) to a temp folder'
    echo '  2) Run this against the temp folder and check the renames'
    echo '  3) Manually rename any left-overs'
    echo '  4) Add IPTC comments, locations, etc.'
    echo '  5) Run '
    exit
esac
### ---> sort out folder names and other stuff here <---- ###
# There are a number of these kinds of lines for different cameras
jhead -model A70 -exonly -nf'%Y-%m-%d %H-%M-%S-Canon PowerShot A70' -ft *.jpg
# Deal with .NEF (Nikon Raw) files (rename to YYYY-MM-DD HH-MM-SS-NIKON D90-DSC_????.NEF)
exiftool '-FileName<${CreateDate}-NIKON D90-%f.%e' -d '%Y-%m-%d %H-%M-%S' DSC_????.NEF
# Use %c to add seq num where required

I've always meant to get round to replacing jhead with just exiftool - one day perhaps!