Swift:在 swift 中应用滤镜时出现 UIImage 方向问题

Swift: UIImage orientation problem when applying filter in swift

我想通过 CIPhotoEffectNoir 将图像转换为灰度,但使用后图像会旋转。我搜索了很多,但答案不能解决我的问题。

这是我的代码:

    func grayscale(image: UIImage) -> UIImage? {
        let context = CIContext(options: nil)
        if let filter = CIFilter(name: "CIPhotoEffectNoir") {
            filter.setValue(CIImage(image: image), forKey: kCIInputImageKey)
            
            if let output = filter.outputImage {
                if let cgImage = context.createCGImage(output, from: output.extent) {
                    return UIImage(cgImage: cgImage)
                }
            }
        }
        return nil
    }

之前:

之后:

我想要的:

当您创建新的 UIImage 实例时,不要忘记使用原始 UIImage 中的 scaleorientaion 值。

return UIImage(
  cgImage: cgimg, 
  scale: image.scale, 
  orientation: image.imageOrientation)