1

我想通过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
    }

前:

在此处输入图像描述

后:

在此处输入图像描述

我想要的是:

在此处输入图像描述

4

1 回答 1

2

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

return UIImage(
  cgImage: cgimg, 
  scale: image.scale, 
  orientation: image.imageOrientation)
于 2020-08-23T02:55:01.417 回答