【发布时间】:2021-06-27 04:07:46
【问题描述】:
我正在尝试对图像应用过滤器。 应用滤镜效果很好,但它会垂直镜像图像。
最下面一行图片在init之后调用了filter函数。
顶部的主图像,按下底部的一个后应用过滤器
ciFilter 是 CIFilter.sepiaTone()。
func applyFilter(image: UIImage) -> UIImage? {
let rect = CGRect(origin: CGPoint.zero, size: image.size)
let renderer = UIGraphicsImageRenderer(bounds: rect)
ciFilter.setValue(CIImage(image: image), forKey: kCIInputImageKey)
let image = renderer.image { context in
let ciContext = CIContext(cgContext: context.cgContext, options: nil)
if let outputImage = ciFilter.outputImage {
ciContext.draw(outputImage, in: rect, from: rect)
}
}
return image
}
在应用过滤器两次后,新图像会被放大。
【问题讨论】:
-
UIKit 原点在左上角,但 CIFilter 原点在左下角。你必须补偿。
标签: ios swift uiimage core-image uigraphicsimagerenderer