#endif
}
-QImage ImageLoader::correctRotation(const QImage& tempImage, const QString &path)
+QImage ImageLoader::correctRotation(const QImage& image, const QString &path)
{
- QImage image = QImage();
- if (!tempImage.isNull()) {
-#ifdef HAVE_KEXIV2
- KExiv2Iface::KExiv2 exif(path);
- QMatrix m;
- switch (exif.getImageOrientation()) {
- case KExiv2Iface::KExiv2::ORIENTATION_HFLIP:
- m.scale(-1.0,1.0);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_180:
- m.rotate(180);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_VFLIP:
- m.scale(1.0,-1.0);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90:
- m.rotate(90);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90_HFLIP:
- m.rotate(90);
- m.scale(-1.0,1.0);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90_VFLIP:
- m.rotate(90);
- m.scale(1.0,-1.0);
- image = tempImage.transformed(m);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_270:
- m.rotate(270);
- image = tempImage.transformed(m);
- break;
- default:
- image = tempImage;
- }
-#else
- image = tempImage;
+#ifdef HAVE_KEXIV2
+ if (!image.isNull()) {
+ QImage tempImage(image);
+ KExiv2Iface::KExiv2 exiv(path);
+ exiv.rotateExifQImage(tempImage, exiv.getImageOrientation());
+ return tempImage;
#endif
}
return image;
{
//We managed reading the EXIF info, rotate the image
//according to the EXIF orientation flag
- KExiv2Iface::KExiv2::ImageOrientation orient=exiv.getImageOrientation();
-
- //Rotate according to the EXIF orientation flag
- switch(orient)
- {
- case KExiv2Iface::KExiv2::ORIENTATION_UNSPECIFIED:
- case KExiv2Iface::KExiv2::ORIENTATION_NORMAL:
- break; //we do nothing
- case KExiv2Iface::KExiv2::ORIENTATION_HFLIP:
- preview = preview.mirrored(true,false);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_180:
- preview = preview.transformed(QMatrix().rotate(180));
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_VFLIP:
- preview = preview.mirrored(false,true);
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90_HFLIP:
- preview = preview.mirrored(true,false);
- preview = preview.transformed(QMatrix().rotate(90));
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90:
- preview = preview.transformed(QMatrix().rotate(90));
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_90_VFLIP:
- preview = preview.mirrored(false,true);
- preview = preview.transformed(QMatrix().rotate(90));
- break;
- case KExiv2Iface::KExiv2::ORIENTATION_ROT_270:
- preview = preview.transformed(QMatrix().rotate(270));
- break;
- default:
- break;
- }
+ exiv.rotateExifQImage(preview, exiv.getImageOrientation());
}
//Scale the image as requested by the thumbnailer