对于某些图像,QImage加载方向错误

时间:2013-02-27 22:02:30

标签: qt

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

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

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

这似乎只发生在手机上以纵向模式拍摄的照片。那些在景观中拍摄的人很好

4 个答案:

答案 0 :(得分:2)

由于Qt 5.5设置了 Image.autoTransform:true ,因为默认值为false!

QT Image QML Type reference

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

听起来像cppguy知道一个可以让你检查这些标志的库。

编辑找到了更好的描述:

  

johninsj - Re:iPhone 4 Photo&视频在电子邮件中横向旋转

     

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

     

Apple在拍摄照片时设置了方向的jpeg元标记,   所以,如果你把iphone倒挂,或侧身等,那么这个形象   (由于相机处于上升状态,因此倒置或侧向拍摄   向下/侧面)知道它在你看时需要翻转/旋转图像   在它。

     

并非所有软件都遵循旋转设置。 Gimp(继续运行   一切都是免费的。

     

您可以旋转图像并保存图像,也可以学习使用图像拍摄照片   iPhone处于非旋转图像的正确方向。那会   当你看屏幕时,请使用右侧的主页按钮。

希望有所帮助。

答案 3 :(得分:0)

使用C ++ Qt类QImageReader:

QImageReader imgReader( imagePath );
imgReader.setAutoTransform( true );
QImage img = imgReader.read();