快速图像保存到应用程序中的手机正在旋转90度或180

时间:2017-10-16 15:16:09

标签: ios swift uiimage

在swift 3.2 app中,我允许用户拍摄照片或从手机图库中选择一张照片。

我在应用中显示图像,右侧显示。我通过使用UIImagePNGRepresentation()方法将png转换为数据,将图像保存到目录中。

将图像上下颠倒检索。 据我所知,我不是在任何地方旋转图像。

2 个答案:

答案 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支持用于存储图像方向的元信息。