首页 > 解决方案 > 为什么让 cimg = CIImage(image: self.img) 后图像旋转 90 度

问题描述

我正在使用苹果核心图像处理图像,当我将 UIImage 转换为 CIImage 时,图像似乎旋转了 90 度。主要代码如下,

 struct PhotoDetailView: View {
    @Binding var img:UIImage
    var body: some View {
        
        print(self.img.size)
        let cimg = CIImage(image: self.img)
        print(cimg?.extent.size)
       
      let context = CIContext()
       
      let filter = CIFilter(name: "CIPhotoEffectMono")!
    
        filter.setValue(cimg, forKey: kCIInputImageKey)
      let result = filter.outputImage!
        print(result.extent.size)

打印输出:(3024.0, 4032.0) 可选((4032.0, 3024.0)) (4032.0, 3024.0)

标签: swiftcore-image

解决方案


您应该保留图像的方向信息

 let orientation = self.img.imageOrientation
 let cimg = CIImage(image: self.img)
 let context = CIContext()
 ...
 let img2 = UIImage(cgImage: cgImage!, scale: 1.0, orientation: orientation)

推荐阅读