我正在从如下所示的图像文件中实例化 QImage,然后在 QWidget 上渲染它。
QImage ( const QString & fileName, const char * format = 0 )
对于大多数图像,一切正常。但是对于一些图像,QImage 会加载 90 度旋转的图像。
似乎这只发生在我之前在手机上以纵向模式拍摄的照片上。风景拍的都不错
我正在从如下所示的图像文件中实例化 QImage,然后在 QWidget 上渲染它。
QImage ( const QString & fileName, const char * format = 0 )
对于大多数图像,一切正常。但是对于一些图像,QImage 会加载 90 度旋转的图像。
似乎这只发生在我之前在手机上以纵向模式拍摄的照片上。风景拍的都不错
您可能需要使用 libexif 之类的库来确定照片方向,然后相应地旋转 QImage
使用 C++ Qt 类 QImageReader:
QImageReader imgReader( imagePath );
imgReader.setAutoTransform( true );
QImage img = imgReader.read();
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 以正确的方向拍摄未旋转图像的照片。当您查看屏幕时,这将是右侧的主页按钮。
希望有帮助。
从 Qt 5.5 开始设置Image.autoTransform : true因为默认为 false!