There are a number of ways in which I handle post-processing digital photos.
The first issue is that if the original photo is in JPEG format, then one wants to be careful to preserve the original file. All editing and modifications, save lossless rotation, should be performed on a copy of the original. This is because JPEG is a “lossy” format, and each time a JPEG image is resaved, some more of the original detail is lost. I wrote an application some years back to rename multiple files at a time; several programs now offer similar capabilities. My usual approach now is to name a directory by the date certain photos were taken, and also to give a very short description of the contents of the directory in that name.
If I just want to edit individual photos, I use an editor like GIMP or Corel Photo-Paint. Adobe Photoshop is the canonical tool, but I was using Corel products way back when, and never really got into it. GIMP has a lot of features, and is free, though you will likely want to purchase a tutorial book if you decide to use it. Corel’s products are definitely commercial, but if you are willing to use versions one or two steps behind the latest one, you can get the graphics suite pretty cheaply.
When I want to print a digital photo on my own printer, the essential tool is QImage. This package has a number of features that make it well-suited to batch processing and printing of digital photos. One of the best of these has to be the ability to set an image crop with the right aspect ratio for a selected print size: no guessing about what is on or off the printed page. QImage also performs its own interpolation to match the printer’s native resolution, eliminating the interpolation normally applied by printer drivers. QImage is also the package I use when I want to upsample a digital photo, again on the strength of its interpolation algorithms. QImage also performs image adjustments like “Exposure” (a normalization process), unsharp mask (sharpening), tone curves, blemish and red eye removal, and high-iso noise reduction. So QImage is pretty much the program to use when printing on-site to streamline a workflow.
To get from a large digital photo to web-sized photos and thumbnails, I am now using the ImageMagick package of command-line image manipulation tools, the “jpegoptim” command line tool, and several Perl scripts to automate things. “jpegoptim” permits the removal of EXIF information and comments, and the optimal recompression of JPEG photos. This typically reduces the size of a JPEG for web distribution to 1/5 to 1/2 of its original size. That helps a lot with both storage requirements for photos and bandwidth in serving them.
Because “jpegoptim” doesn’t take wildcards, at least in its Win32 version, I have written a Perl script to apply it to all JPEG files in a directory (jo.pl). I have also written a Perl script to resize a file as a thumbnail, a somewhat larger version for web pages, and a version for use in PowerPoint presentations (resize.pl), and another that automatically does this for all the JPEGs in a directory (resize-all.pl). The resize operation does a “normalize” operation as well. The “jpegoptim” parameters are set to remove EXIF information and comments, then set the quality level at 60.