图片滤镜
GPUImagePicture 用于已拍摄的图片加滤镜
直接上代码:
- (UIImage *)imageProcessdUsingGPUImage:(UIImage *)imageToProcess { GPUImagePicture *stillImageSource = [[GPUImagePicture alloc]initWithImage:imageToProcess]; // 设置滤镜 GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc]init]; [stillImageSource addTarget:stillImageFilter]; [stillImageFilter useNextFrameForImageCapture]; [stillImageSource processImage]; UIImage *currentFilteredVideoFrame = [stillImageFilter imageFromCurrentFramebuffer]; return currentFilteredVideoFrame;}复制代码
效果图:
处理图片的方法有多种:CPU、CoreImage、GPUImage
CPU
>= GPUImage
> CoreImage
具体可参考:
GPUImageStillCamera 用于实时拍摄照片加滤镜
直接上代码:
- (void)configGPUImageView { // 可视的预览view GPUImageView *imageView = [[GPUImageView alloc]initWithFrame:self.view.frame]; imageView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; imageView.fillMode = kGPUImageFillModePreserveAspectRatio; self.view = imageView; // 创建滤镜 self.filter = [[GPUImageSketchFilter alloc]init]; // 创建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"); } }]; }];}复制代码
效果图: