On Sun, Dec 6, 2009 at 4:50 PM, Lubomir Bourdev
Rotation is lossless, but the jpeg format is not.
Lossless rotation is supported libjpeg release 7 (2005), but most Linux systems I have check come with version 6. http://jpegclub.org/jpegtran/ Using GIL original size: 4106172 image/jpeg 3264 2448 rotated size: 5594681 image/jpeg 2448 3264 Using jpegtran -rot 90 -perfect 4106172 image/jpeg 3264 2448 4073598 image/jpeg 2448 3264 Note that jpegtran also removes exif tags, but if not the size would be the sime (as I understand lossless transform).
There is a quality setting in the jpeg parameters that affects file size. I believe the new jpeg IO that Christian wrote exposes that setting, Christian is that true?
The current GIL already has a quality parameter (third param of jpeg_write_view) but for the above GIL experiment I assumed default quality=100 so that no loss was introduced by change in quality.
What can I do make sure the exif tags are preserved ? Christian, is this possible?
Another option is to keep the original photo as it is and rotate before resampling (but I couldn't compile it). What type magic am I missing ? TYPE myview = boost::gil::rotated90cw_view(boost::gil::view(img); boost::gil::resample_pixels(myview, boost::gil::view(fin), mat, bg::bilinear_sampler()); boost::gil::jpeg_write_view(file_out, boost::gil::const_view(fin), quality); thanks