3

我正在从如下所示的图像文件中实例化 QImage,然后在 QWidget 上渲染它。

QImage ( const QString & fileName, const char * format = 0 )

对于大多数图像,一切正常。但是对于一些图像,QImage 会加载 90 度旋转的图像。

似乎这只发生在我之前在手机上以纵向模式拍摄的照片上。风景拍的都不错

4

4 回答 4

3

您可能需要使用 libexif 之类的库来确定照片方向,然后相应地旋转 QImage

于 2013-02-27T22:10:23.413 回答
3

使用 C++ Qt 类 QImageReader:

QImageReader imgReader( imagePath );
imgReader.setAutoTransform( true );
QImage img = imgReader.read();
于 2020-11-06T21:10:26.823 回答
2

https://discussions.apple.com/thread/2541504?start=0&tstart=0

听起来这是一个很常见的问题,在图像上添加了一些标志或标签,说明如何旋转它,而不是实际重新排序图像中的像素。对于您尝试渲染的图像,您可以使用您尝试使用的格式,看看是否有任何额外的标志可以检查并让 Qt 进行旋转。

听起来 cppguy 知道有一个库可以让您检查这些标志。

编辑找到了更好的描述:

johninsj - 回复:iPhone 4 照片和视频在电子邮件中横向旋转

2010 年 11 月 2 日下午 1:45(响应 VibrantRedGT)

当您拍摄照片时,Apple 会设置 jpeg 元标记以进行定向,因此如果您将 iphone 倒置或侧放等,图像(由于相机倒置/侧置而被倒置或侧向拍摄)知道它当您查看图像时需要翻转/旋转图像。

并非所有软件都支持旋转设置。Gimp(它可以在所有东西上运行,并且是免费的)可以。

您可以旋转图像并保存它们,或者学习使用 iPhone 以正确的方向拍摄未旋转图像的照片。当您查看屏幕时,这将是右侧的主页按钮。

希望有帮助。

于 2013-02-27T22:11:05.630 回答
2

从 Qt 5.5 开始设置Image.autoTransform : true因为默认为 false!

QT Image QML 类型参考

于 2020-11-03T22:31:27.880 回答