22 #include <libexif/exif-loader.h>
30 auto data = imageData.constData();
31 auto size = imageData.size();
33 ExifData* exifData = exif_data_new_from_data(
reinterpret_cast<const unsigned char*
>(data), size);
39 const ExifByteOrder byteOrder = exif_data_get_byte_order(exifData);
40 const ExifEntry*
const exifEntry = exif_data_get_entry(exifData, EXIF_TAG_ORIENTATION);
43 exif_data_free(exifData);
47 const int orientation = exif_get_short(exifEntry->data, byteOrder);
48 exif_data_free(exifData);
68 qWarning() <<
"Invalid exif orientation";
75 QTransform exifTransform;
76 switch (orientation) {
80 image = image.mirrored(1, 0);
83 exifTransform.rotate(180);
86 image = image.mirrored(0, 1);
89 exifTransform.rotate(-90);
90 image = image.mirrored(1, 0);
93 exifTransform.rotate(90);
96 exifTransform.rotate(90);
97 image = image.mirrored(1, 0);
100 exifTransform.rotate(-90);
103 image = image.transformed(exifTransform);