01.jpg
圖片濾鏡
GPUImagePicture 用于已拍攝的圖片加濾鏡
demo下載地址:https://github.com/SXDgit/GPUImage_Picture
直接上代碼:
- (UIImage *)imageProcessdUsingGPUImage:(UIImage *)imageToProcess {
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc]initWithImage:imageToProcess];
// 設(shè)置濾鏡
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc]init];
[stillImageSource addTarget:stillImageFilter];
[stillImageFilter useNextFrameForImageCapture];
[stillImageSource processImage];
UIImage *currentFilteredVideoFrame = [stillImageFilter imageFromCurrentFramebuffer];
return currentFilteredVideoFrame;
}
效果圖:
image
處理圖片的方法有多種:CPU、CoreImage基茵、GPUImage
處理效率(性能):CPU
>= GPUImage
> CoreImage
具體可參考:https://blog.csdn.net/xoxo_x/article/details/53507016
GPUImageStillCamera 用于實(shí)時(shí)拍攝照片加濾鏡
demo下載地址:https://github.com/SXDgit/GPUImage_StillCamera
直接上代碼:
- (void)configGPUImageView {
// 可視的預(yù)覽view
GPUImageView *imageView = [[GPUImageView alloc]initWithFrame:self.view.frame];
imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
imageView.fillMode = kGPUImageFillModePreserveAspectRatio;
self.view = imageView;
// 創(chuàng)建濾鏡
self.filter = [[GPUImageSketchFilter alloc]init];
// 創(chuàng)建Camera
self.stillCamera = [[GPUImageStillCamera alloc]initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
_stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
[_stillCamera addTarget:_filter];
[_filter addTarget:imageView];
[_stillCamera startCameraCapture];
}
// 拍攝
- (void)buttonAction {
[_stillCamera capturePhotoAsJPEGProcessedUpToFilter:_filter withCompletionHandler:^(NSData *processedJPEG, NSError *error) {
ALAssetsLibrary *library = [[ALAssetsLibrary alloc]init];
[library writeImageDataToSavedPhotosAlbum:processedJPEG metadata:self.stillCamera.currentCaptureMetadata completionBlock:^(NSURL *assetURL, NSError *error) {
if (error) {
NSLog(@"ERROR: failed");
}else {
NSLog(@"SUCCESS: saved");
}
}];
}];
}
效果圖:
image