demo下載地址:https://github.com/SXDgit/GPUImage_Picturegit
直接上代碼:github
- (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;
}
複製代碼
效果圖:bash
處理圖片的方法有多種:CPU、CoreImage、GPUImage
處理效率(性能):CPU
>= GPUImage
> CoreImage
ide
具體可參考:blog.csdn.net/xoxo_x/arti…性能
demo下載地址:https://github.com/SXDgit/GPUImage_StillCameraui
直接上代碼:spa
- (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");
}
}];
}];
}
複製代碼
效果圖:.net