在swift 3.2 app中,我允许用户拍摄照片或从手机图库中选择一张照片。
我在应用中显示图像,右侧显示。我通过使用UIImagePNGRepresentation()方法将png转换为数据,将图像保存到目录中。
将图像上下颠倒检索。 据我所知,我不是在任何地方旋转图像。
答案 0 :(得分:1)
我也面临同样的问题。在我脑海中突然出现的唯一解决方法是检查图像的方向是否正确。如果它不直立,我们需要从图形上下文中获取正确的图像。
您可以编写一个扩展来修复图像方向,如下所示:(来源:here)
extension UIImage {
func fixOrientation() -> UIImage {
if self.imageOrientation == UIImageOrientation.up {
return self
}
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
self.draw(in: CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height))
let normalizedImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return normalizedImage;
}
}
然后从相机拍摄照片后调用该方法。
chosenImage = chosenImage.fixOrientation()
答案 1 :(得分:0)
手机可以保存使用相机拍摄的图像,其方向与CCD传感器返回图像数据的方式相对应,使其生活更轻松。它可以追溯到手机内存不足以旋转图像的时间。此外,他们还保存有关图像保存方向的元信息,以便正确显示。
我不知道你在应用程序中如何显示图像,但显然你使用了解这一点的代码。
在使用UIImagePNGRepresentation
之前,您必须修复图像的旋转。 Rikesh Subedi的代码应该可行。但StackOverflow还有更多。
或者,您可以将其另存为JPEG。与PNG不同,JPEG支持用于存储图像方向的元信息。