5

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

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

由于我捕获的图像看起来不错,我只想保留图像的外观。但是,我想将图像方向设置为向上。如果我只是设置图像方向,图像看起来就不再正确了。

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

4

2 回答 2

10
- (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;
}
于 2015-06-19T06:25:45.047 回答
8

奥德林门德斯答案的快速版本

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
}
于 2017-01-20T19:34:19.443 回答