使用GPUImage可以做给图片加上滤镜,自带了120多种的滤镜
*滤镜文件使用地址:https://github.com/BradLarson/GPUImage
有很多种创建滤镜的方法,如创建一个调解亮度的滤镜
1. 从缓冲区获取滤镜
let inputImage = UIImage(named: "img_analyse_food")
//创建一个调节亮度的滤镜
let fileter = GPUImageBrightnessFilter()
fileter.brightness = -0.5
//设置要渲染的区域
fileter.forceProcessingAtSize((inputImage?.size)!)
fileter.useNextFrameForImageCapture()
//获取数据源
let stillImageSource = GPUImagePicture(image: inputImage)
//添加滤镜
stillImageSource.addTarget(fileter)
//开始渲染
stillImageSource.processImage()
//获取渲染后的图片
let brightnessImage = fileter.imageFromCurrentFramebuffer()
从Framebuffer里面获取滤镜图片的2个方法
public func imageFromCurrentFramebuffer() -> UIImage!
public func imageFromCurrentFramebufferWithOrientation(imageOrientation: UIImageOrientation) -> UIImage!
注意:由于默认情况下,GPUImage会复用缓冲区内的过滤器,以节省内存,
当使用这个2个方法之前,需要在processImage前设置useNextFrameForImageCapture
对比如下
2.简单创建一个使用在图片上的滤镜
let stillImageFilter2 = GPUImageSepiaFilter()
quickFilteredImage = stillImageFilter2.imageByFilteringImage(inputImage)
3.通过读取一个acv文件创建滤镜
if !NSFileManager.defaultManager().fileExistsAtPath(path) {
path = NSBundle.mainBundle().pathForResource(preName, ofType: "acv")!
let data = NSData(contentsOfFile: path)
//读取ACV文件获得滤镜
let filter = GPUImageToneCurveFilter(ACVData:data)
// filter.forceProcessingAtSize(image.size)
filter.useNextFrameForImageCapture()
item.largeImage = filter.imageByFilteringImage(largeImage)
}