You can get decent results on jpeg images using jpegtran, and if you don't mind progressive jpegs, you can get slightly smaller images with a progressive scan table optimized for your images (determining the ideal scan order for your dataset is left as an exercise to the reader):