QLabel显示包含EXIF数据图片

Qt利用QLabel显示图片的默认操作是

1
2
QImage image.load("test.jpeg");
label.setPixmap(QPixmap::fromImage(image));

但是在打开包含EXIF信息的图片时候(发生在用照相机等拍摄的图片)等,出现了图片发生了旋转的问题,原本的图片发生了90度的旋转。

那是因为在打开图片时候,QImage::load没有根据图片中EXIF信息中的Orientation调整图片角度,打开包含EXIF数据的图片需要用QImageReader

1
2
3
4
QImageReader reader("test.jpeg");
reader.setAutoTransform(true); // 自动调整图片角度
QImage image = reader.read();
label->setPixmap(QPixmap::fromImage(image));