筆記-GPUImage(二)圖片濾鏡

圖片濾鏡

GPUImagePicture 用於已拍攝的圖片加濾鏡

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 > CoreImageide

具體可參考:blog.csdn.net/xoxo_x/arti…性能

GPUImageStillCamera 用於實時拍攝照片加濾鏡

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

相關文章
相關標籤/搜索