ImageJ is a powerful Java-based tool with a range of advanced image processing features.
At its simplest, you can use the program to optimise and edit most digital images. ImageJ will open most standard formats, including JPG, PNG, TIFF, BMP and GIF; you can then crop, resize, flip or rotate the picture, and there are all the usual tools to adjust brightness, contrast and colours, add text, lines and more.
ImageJ also offers plenty of image analysis options, though, with tools to measure areas, distances and angles, count cells, and generate histograms, profile plots and more.
The program supports plenty of clever ideas of its own. A "Stack", for instance, is a collection of related images in a single window. You can opt to open a folder of images as a stack, and if you do that you can then apply a single command to all of them in one operation. Stacks can even be saved as multi-image TIFF files so you can be sure they'll stay together.
And if that's still not enough, ImageJ can be extended with more than 500 plugins. Just browsing the list of what's on offer is enough to show you what an amazingly powerful tool this can be.