使用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
對比如下
1.png
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)
}