JPEG is a lossy format, and naive rotation results in a loss of quality. JPEG does allow some lossless operations, such as rotation by 90 degrees and flipping, on the basic blocks (MCUs) that compromise the image. It also allows re-arranging those blocks. Using this lossless operation, it is possible to preform a lossless JPEG rotation. To do so, the rotated image mus meet some basic criteria like having it size a multiple of the MCU size (usually 16×16).
Not all programs preform a lossless JPEG rotation, so it is useful to be aware which does. I check a couple of commonly used program to see if they indeed preform lossless rotation. The testing procedure was:
- Start with the original JPEG photo.
- Rotate it once to the right using each program.
- Rotate a copy of the rotated photo back to the right using the same program.
- Compare using ImageMagick (
compare -metric ae
) the results.
Results
Gnome’s Image Viewer 3.14.1 is lossless
Digikam (4.4.0) is lossless, however rotating with Digikam’s Image Editor is lossy.
Shotwell (0.20.1) does lossy rotation.
Thanks for looking into this.
I wonder it rotation is possible based on EXIF data alone (which sometimes includes a rotation field).
I guess that would require every viewer to recognize such data.