【发布时间】:2018-09-20 08:54:15
【问题描述】:
我在使用CIFilter 时遇到了一个问题,它在输出的图像上方和下方应用偏移/边框。如下例所示。
在此示例中,我只是获取 UIImage,应用 CIPixellate,固定方向,然后以全屏显示此图像 UIImageView,背景颜色为红色以演示问题(将背景颜色设置为默认值color 'clear' 产生白色偏移。下面是UIImageView 的设置。
通过调试,我知道问题发生在应用 CIFilter 时的某个地方,并且与 UIImageView 无关,如果我只是在没有过滤器的情况下传递图像,则不会发生此问题。
作为参考,这是我用来像素化图像的代码:
extension UIImage {
func pixellate(amount: Int) -> UIImage? {
let ciImage = CIImage(cgImage: self.cgImage!)
let filter = CIFilter(name: "CIPixellate")
filter?.setValue(ciImage, forKey: kCIInputImageKey)
filter?.setValue(amount, forKey: kCIInputScaleKey)
guard let outputImage = filter?.outputImage else { return nil }
var pixellatedImage: UIImage?
// Fix the orientation of the newly processed image
let context = CIContext()
if let cgimg = context.createCGImage(outputImage, from: outputImage.extent) {
let processedImage = UIImage(cgImage: cgimg)
let portraitImage = UIImage(cgImage: processedImage.cgImage!, scale: 1.0, orientation: UIImageOrientation.right)
pixellatedImage = portraitImage
}
return pixellatedImage
}
}
这里发生了什么?有没有办法防止这种情况发生?
【问题讨论】:
标签: ios swift uiimageview core-image cifilter