我正在从像下面的图像文件中实例化QImage,然后在QWidget上渲染它。
QImage ( const QString & fileName, const char * format = 0 )
对于大多数图像,一切正常。但是对于一些图像,QImage会加载90度旋转图像。
这似乎只发生在手机上以纵向模式拍摄的照片。那些在景观中拍摄的人很好
答案 0 :(得分:2)
由于Qt 5.5设置了 Image.autoTransform:true ,因为默认值为false!
答案 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();