iOS開發中 再用到照片的時候 或多或少遇到過這樣的問題 就是我想用的照片有橫着拍的有豎着排的 所以導致我選取圖片后的效果也橫七豎八的 顯示效果不好
比如:
圖中紅圈選中的圖片選取的是橫着拍的圖片 所以顯示的頭像也是橫着的 顯示效果不佳
問題描述:
使用過iPhone或者iPad的朋友在拍照時不知是否遇到過這樣的問題,將設備中的照片導出到Windows上時,經常發現導出的照片方向會有問題,要么橫着,要么顛倒着,需要旋轉才適合觀看。而如果直接在這些設備上瀏覽時,照片會始終顯示正確的方向,在Mac上也能正確顯示。最近在iOS的開發中也遇到了同樣的問題,將拍攝的照片上傳到服務器后,再由Windows端下載該照片,發現手機上完全正常的照片到了這里顯示的橫七豎八。同一張照片為什么在不同的設備上表現的不同?如何能夠避免這種情況
解決方法:
要想解決這個問題 我們就需要拿到圖片的相關信息,去檢查圖片的方向 從而根據方向去做出調整:
UIImage對象中有一個屬性叫:imageOrientation,這里面便保存了方向信息:
它一共有八個值:

那么我們便可以根據這一屬性對圖像進行相應的旋轉,從而將圖像的原始數據旋轉至正確的方向,在瀏覽照片時無需方向信息便可正常瀏覽。
解決方法:
- (UIImage *)normalizedImage { if (self.imageOrientation == UIImageOrientationUp) return self; UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); [self drawInRect:(CGRect){0, 0, self.size}]; UIImage *normalizedImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return normalizedImage; }
這里是利用了UIImage中的drawInRect方法,它會將圖像繪制到畫布上,並且已經考慮好了圖像的方向
參考詳情:cocoChina
