使用GPUImage 實現利用GPU來實習濾鏡(實時濾鏡 和iphone手機一樣)

一:將GPUImage 添加到工程

    兩篇資料

    國外鏈接地址:http://code.tutsplus.com/tutorials/build-a-photo-app-with-gpuimage--mobile-12223

    國內鏈接地址:http://bbs.lbsweek.com/thread-1923-1-1.html 


注意:



二:使用

   a: 圖片使用濾鏡

 

    GPUImageFilter *selectedFilter;

    

    switch (buttonIndex) {

        case 0:

            selectedFilter = [[GPUImageGrayscaleFilter alloc] init];

            break;

        case 1:

            selectedFilter = [[GPUImageSepiaFilter alloc] init];

            break;

        case 2:

            selectedFilter = [[GPUImageSketchFilter alloc] init];

            break;

        case 3:

            selectedFilter = [[GPUImagePixellateFilter alloc] init];

            break;

        case 4:

            selectedFilter = [[GPUImageColorInvertFilter alloc] init];

            break;

        case 5:

            selectedFilter = [[GPUImageToonFilter alloc] init];

            break;

        case 6:

            selectedFilter = [[GPUImagePinchDistortionFilter alloc] init];

            break;

        case 7:

            selectedFilter = [[GPUImageFilter alloc] init];

            break;

        default:

            break;

    }

    

    //關鍵代碼:

    UIImage *filterImage=[selectedFilter imageByFilteringImage:self.selectImage];

    

    self.showImageView.image=filterImage;


b:實時濾鏡

  

    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];

    //    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionFront];

    //    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1280x720 cameraPosition:AVCaptureDevicePositionBack];

    //    videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1920x1080 cameraPosition:AVCaptureDevicePositionBack];

    

    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;

    videoCamera.horizontallyMirrorFrontFacingCamera = NO;

    videoCamera.horizontallyMirrorRearFacingCamera = NO;

    

    filter = [[GPUImageSketchFilter alloc] init];

    GPUImageView *filterView = [[GPUImageView alloc] initWithFrame:CGRectMake(10, 100, 100, 100)];

    filterView.fillMode=kGPUImageFillModePreserveAspectRatioAndFill;

    [self.view addSubview:filterView];

    [filter addTarget:filterView];

    [videoCamera addTarget:filter];

    

    GPUImageColorInvertFilter *filter1= [[GPUImageColorInvertFilter alloc] init];

    GPUImageView *filterView1 = [[GPUImageView alloc] initWithFrame:CGRectMake(110, 100, 100, 100)];

    filterView1.fillMode=kGPUImageFillModePreserveAspectRatioAndFill;

    [self.view addSubview:filterView1];

    [filter1 addTarget:filterView1];

    [videoCamera addTarget:filter1];

    

    GPUImageGrayscaleFilter *filter2= [[GPUImageGrayscaleFilter alloc] init];

    GPUImageView *filterView2 = [[GPUImageView alloc] initWithFrame:CGRectMake(210, 100, 100, 100)];

    filterView2.fillMode=kGPUImageFillModePreserveAspectRatioAndFill;

    [self.view addSubview:filterView2];

    [filter2 addTarget:filterView2];

    [videoCamera addTarget:filter2];

    

       

    [videoCamera startCameraCapture];




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章