2013-02-27 73 views
1

我正在像下面這樣的圖像文件中實例化一個QImage,然後將它呈現在QWidget上。對於某些圖像,QImage的加載方向錯誤

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

對於大多數圖像,一切工作正常。但是對於一些圖像,QImage會載入90度旋轉的圖像。

看來,這種情況只會出現在我的手機拍攝的肖像模式中。那些在風景拍攝的罰款

+1

也許圖像包含一些關於方向的元數據,並且您正在使用的圖像查看器根據該信息旋轉圖像。 – 2013-02-27 22:10:21

回答

1

您可能需要使用一個庫像libexif確定照片方向,然後旋轉的QImage相應

+0

你知道哪個'libexif' API可以告訴照片的方向嗎?更好的是,Qt中有一個庫可以完成這項工作嗎? – 2013-02-28 05:07:46

+0

@SaptarshiBiswas我簡單地看了一下,它看起來並不像Qt處理exif。 exif中的旋轉屬性稱爲orientation,我相信。 libexif是一個非常簡單的庫,可以使用並且擁有非常開放的許可證。很容易融入現有項目。 – cppguy 2013-02-28 19:14:33

+1

'libexif'爲我工作。 – 2013-03-01 05:06:42

1

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

這聽起來像這是一個很常見的問題,在這裏圖像上添加了一些標誌或標籤,說明如何旋轉它,而不是實際重新排序圖像中的像素。對於要呈現的圖像,您可以採用您嘗試使用的格式,並查看是否有任何額外的標記可以檢查並讓Qt執行旋轉。

聽起來像cppguy知道一個庫,可以讓你檢查這些標誌。

編輯爲它找到一個更好的描述:

johninsj - 回覆:iPhone 4照片的&視頻旋轉橫盤電子郵件

2010年11月2日1:45 PM(響應VibrantRedGT)

當你拍攝照片時,蘋果會設置jpeg中繼標記的方向,所以如果你拿着iphone上下或側身等,圖像 (由於相機向上拍攝,因爲相機向上拍攝 向下/側身)知道它需要翻轉/旋轉圖像,當你看它 。

並非所有的軟件都支持旋轉設置。瘸子(它運行在 的一切,並且是免費的)。

您可以旋轉圖像並保存它們,或者學習如何使用iPhone以正確的方向拍攝未旋轉圖像的照片。當你看着屏幕時, 將與主屏幕按鈕向右。

希望有所幫助。

+0

感謝您的好解釋。有沒有辦法在Qt中讀取exif而不是像cppguy中提到的那樣使用外部庫? – 2013-02-28 06:12:35

+0

這兩個問題:http://stackoverflow.com/questions/15128656/read-exif-metadata-of-images-in-qt和http://stackoverflow.com/questions/4105534/what-exif-lib-can -i-use-from-a-qt-program-on-embedded-linux?rq = 1可能會有幫助。它看起來像是有什麼東西,你可以添加:http://doc.qt.digia.com/qtextended4.4/qexifimageheader.html – phyatt 2013-02-28 16:20:50

+1

由於QExifImageHeader不是Qt的一部分,我對它的支持和維護有疑問方面 - 所以我按照cppguy的建議使用libexif。 – 2013-03-01 05:08:58