【问题标题】:UIImage from NSData with wrong orientation [duplicate]来自NSData的UIImage方向错误[重复]
【发布时间】:2017-01-22 03:22:15
【问题描述】:

我的应用从相机胶卷中挑选一张照片并将其存储为NSData。 当我需要在我的应用中显示图像时,我会从 NSData 创建 UIImage

如果原始照片是我从网络上保存的图像,谷歌图像等,UIImage 具有正确的方向,如果原始照片是我用 iPhone 拍摄的人像照片,UIImage 旋转 90 度离开了。

我无法想象如何知道哪些照片需要旋转,哪些是可以的。

感谢任何帮助。

我用来在 coredata 实体中将图像保存为 NSData 的代码:

 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,则图像正常,否则旋转错误。

最大

【问题讨论】:

  • 请张贴代码。

标签: ios swift uiimage nsdata uiimageorientation


【解决方案1】:

这可能是由于您从图片生成数据的格式。首先尝试从jpg 格式转换它,因为并非所有格式都包含有关图像旋转的信息。试试这样的:

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

【讨论】:

  • 更改为 UIImageJPEGRepresentation 有效,但自从我从 ALAsset 移至照片后,我遇到了问题。
猜你喜欢
  • 2014-03-20
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多