iOS UIImage:设置图像方向而不旋转图像本身

时间:2015-06-19 02:53:41

标签: ios image uiimage uiimageorientation

我正在使用AVCapture +相机肖像模式来捕捉图像。当我显示捕获的图像时,它很好 - 看起来很好。但是当我转换为jpeg表示然后转换为base64字符串到服务器并且服务器存储它时,它被"旋转"已经

所以我在发送到服务器之前检查了图像方向:它是UIImageOrientation.Right(所以有没有办法用肖像模式捕获图像,但捕获的图像方向是什么?好吧,我怀疑经过一些挖掘)。在服务器获得图像后,它没有做任何事情,只是忽略了我想的方向元数据。

因为我捕获的图像看起来很好,我想保留图像的样子。但是,我想将图像方向设置为向上。如果我只是设置图像方向,则图像看起来不再正确。

那么有没有办法在不导致图像旋转的情况下设置方向,或者在将方向设置为向上之后,如何保持方向但是旋转实际图像以使其看起来正确?

2 个答案:

答案 0 :(得分:8)

- (UIImage *)removeRotationForImage:(UIImage*)image {
   if (image.imageOrientation == UIImageOrientationUp) return image;

   UIGraphicsBeginImageContextWithOptions(image.size, NO, image.scale);
   [image drawInRect:(CGRect){0, 0, image.size}];
   UIImage *normalizedImage =  UIGraphicsGetImageFromCurrentImageContext();
   UIGraphicsEndImageContext();
   return normalizedImage;
}

答案 1 :(得分:5)

swrin版本的oldrinmendez回答

func removeRotationForImage(image: UIImage) -> UIImage {
    if image.imageOrientation == UIImageOrientation.Up {
        return image
    }

    UIGraphicsBeginImageContextWithOptions(image.size, false, image.scale)
    image.drawInRect(CGRect(origin: CGPoint(x: 0, y: 0), size: image.size))
    let normalizedImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return normalizedImage
}