使用GPUImage可以做給圖片加上濾鏡响牛,自帶了120多種的濾鏡
*濾鏡文件使用地址:https://github.com/BradLarson/GPUImage
有很多種創(chuàng)建濾鏡的方法凡怎,如創(chuàng)建一個調解亮度的濾鏡
1. 從緩沖區(qū)獲取濾鏡
let inputImage = UIImage(named: "img_analyse_food")
//創(chuàng)建一個調節(jié)亮度的濾鏡
let fileter = GPUImageBrightnessFilter()
fileter.brightness = -0.5
//設置要渲染的區(qū)域
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會復用緩沖區(qū)內的過濾器揪利,以節(jié)省內存竹伸,
當使用這個2個方法之前幌陕,需要在processImage前設置useNextFrameForImageCapture
對比如下
1.png
2.簡單創(chuàng)建一個使用在圖片上的濾鏡
let stillImageFilter2 = GPUImageSepiaFilter()
quickFilteredImage = stillImageFilter2.imageByFilteringImage(inputImage)
3.通過讀取一個acv文件創(chuàng)建濾鏡
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)
}