【问题标题】:iOS UIImage: set image orientation without rotating the image itselfiOS UIImage:设置图像方向而不旋转图像本身
【发布时间】:2015-06-19 02:53:41
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: ios image uiimage uiimageorientation


    【解决方案1】:
    - (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;
    }
    

    【讨论】:

      【解决方案2】:

      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
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 2012-02-13
        相关资源
        最近更新 更多