我目前正在尝试使用由不同CIF过滤器过滤的图片填充集合视图.我用apple方法获得了一系列过滤器.
let filterNames = CIFilter.filterNamesInCategories([kCICategoryStillImage,kCICategoryBuiltIn])
Run Code Online (Sandbox Code Playgroud)
我认为这应该给我所有适用于iPhone上静止图像的过滤器.但它有点不起作用.
这是我从上面的方法得到的(一些)过滤器:
["CIAccordionFoldTransition", "CIAdditionCompositing", "CIAffineClamp", "CIAffineTile", "CIAffineTransform", "CIAreaAverage", "CIAreaHistogram", "CIAreaMaximum", "CIAreaMaximumAlpha", "CIAreaMinimum", "CIAreaMinimumAlpha", "CIAztecCodeGenerator", "CIBarsSwipeTransition", "CIBlendWithAlphaMask", "CIBlendWithMask", "CIBloom", "CIBoxBlur", "CIBumpDistortion", "CIBumpDistortionLinear", "CICheckerboardGenerator", "CICircleSplashDistortion", "CICircularScreen", "CICircularWrap", "CICMYKHalftone",
Run Code Online (Sandbox Code Playgroud)
还有很多.
我用这种方法应用过滤器:
func applyFilter(image: UIImage, filterName: String) -> UIImage {
let beginImage = CIImage(CGImage: image.CGImage!)
let filter = CIFilter(name: filterName)!
filter.setValue(beginImage, forKey: kCIInputImageKey)
filter.setDefaults()
let context = CIContext(options: nil)
let imageRef = context.createCGImage(filter.outputImage!, fromRect: beginImage.extent)
let newImage = UIImage(CGImage: imageRef)
return newImage
}
Run Code Online (Sandbox Code Playgroud)
前两个过滤器不起作用,因为生成的图像是零,然后一些工作,然后我得到:
[<CIAztecCodeGenerator 0x7fb89c775460> setValue:forUndefinedKey:]: this class …Run Code Online (Sandbox Code Playgroud)