2016-09-14 56 views
0

我的應用程序從相機膠捲中挑選一張照片並將其存儲爲NSData。 當我需要在我的應用程序中顯示圖像時,我從NSData創建UIImage。如果原始照片是我用iPhone拍攝的肖像照片,則UIImage會左旋90度,如果原始照片是從網絡,谷歌圖片等保存的圖像,則UIImage具有正確的方向。從NSData UIImage以錯誤的方向

我無法想象如何知道哪張照片需要旋轉以及哪些是確定的。

任何幫助表示讚賞。

我使用的圖像保存爲NSData的在coredata實體代碼:

asset.requestContentEditingInputWithOptions(PHContentEditingInputRequestOptions()) { (input, info) in 
     if let imgurl = input?.fullSizeImageURL { 
      let img = UIImage(data: NSData(contentsOfURL: imgurl)!) 
      self.gearImage = img 
      self.photoImageView.contentMode = UIViewContentMode.ScaleAspectFill 
      self.photoImageView.image = self.gearImage 
     } 
} 

然後我保存的NSData在coredata:

if self.gearImage != nil { 
    newItem.cgPhoto = UIImagePNGRepresentation(self.gearImage!) 
} 

當我必須證明我獲取的圖像coredata實體和:

let img = UIImage(data: self.imageData) 

這就是問題所在。如果phasset fullSizeImageOrientation爲null或1,則圖像正常,否則旋轉錯誤。

最大值

+0

請張貼代碼。 –

回答

0

可能這是由於您從圖片生成數據的格式。請先嚐試從jpg格式轉換它,因爲並非所有格式都包含有關圖片旋轉的信息。嘗試這樣的:

var imageData: NSData? 
if let _jpgData = UIImageJPEGRepresentation(image, 0) { 
    imageData = _jpgData 
} else if let _pngData = UIImagePNGRepresentation(image) { 
    imageData = _pngData 
} 
+0

更改爲UIImageJPEGRepresentation可行,但自從我從ALAsset移至照片後,我遇到了問題。 – masgar