I actually was looking for something to do this for screengrabs. I just ended up using imagemagick that's built into my *nix boxes.
I wrote a command like this and then did a bash script to cycle over everything.
Code:
convert -size 300x300 the_original_file.jpg -thumbnail x200 -resize '200x<' -resize 50% -gravity center -crop 100x100+0+0 +repage new_file.jpg
basically turns the image into a 100x100 thumbnail cutting around the center.
For other stuff I've actually used what Ramster mentioned and it works great as well.