用GPUImage開啓相機而且開啓濾鏡效果

GPUImage提供了GPUImageVideoCamera這麼一個類,它的對象可以調用攝像頭,而且加上濾鏡的效果。ide

    //init VideoCameraspa

    //這裏的兩個參數能夠設定拍攝錄像的像素,還有拍攝錄像的先後攝像頭。不過要注意的是先後攝像頭對像素的要求不一樣,1080P的錄像就不可能在錢攝像頭完成了哈3d

    videoCamera = [[GPUImageVideoCameraalloc] initWithSessionPreset:AVCaptureSessionPreset640x480cameraPosition:AVCaptureDevicePositionBack];對象

    //這個參數是肯定攝像的方向blog

    videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;接口

 

    //開始攝像。這個方法能夠放在任意地方,只要運行了這個方法就開始攝像了get

    [videoCamerastartCameraCapture];it

這些只是開始攝像的初始化工做,若是沒有圖像輸出那麼也是沒有用的哈(雖然StartCameraCapture的做用是開啓攝像頭,可是若是攝像頭上的圖像沒有傳遞到屏幕上那麼是沒有圖像的)io

    //把濾鏡效果加給攝像頭class

    [videoCameraaddTarget:testFilter];

    //把攝像頭上的圖像給GPUImageView顯示出來

    [testFilteraddTarget:imageView];

在這裏的TestFilter已是初始化過了的濾鏡效果。
這樣就能夠成功攝像了

        //關閉攝像頭

        [videoCamerastopCameraCapture];

 關閉攝像頭也很簡單,就很少說了哈

 

還有一個最重要的地方,開啓攝像頭須要完成如下接口才能正常運行:

#pragma mark - vidoe camera

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

{

    // Map UIDeviceOrientation to UIInterfaceOrientation.

    UIInterfaceOrientation orient = UIInterfaceOrientationPortrait;

    switch ([[UIDevicecurrentDevice] orientation])

    {

        caseUIDeviceOrientationLandscapeLeft:

            orient = UIInterfaceOrientationLandscapeLeft;

            break;

            

        caseUIDeviceOrientationLandscapeRight:

            orient = UIInterfaceOrientationLandscapeRight;

            break;

            

        caseUIDeviceOrientationPortrait:

            orient = UIInterfaceOrientationPortrait;

            break;

            

        caseUIDeviceOrientationPortraitUpsideDown:

            orient = UIInterfaceOrientationPortraitUpsideDown;

            break;

            

        caseUIDeviceOrientationFaceUp:

        caseUIDeviceOrientationFaceDown:

        caseUIDeviceOrientationUnknown:

            // When in doubt, stay the same.

            orient = fromInterfaceOrientation;

            break;

    }

    videoCamera.outputImageOrientation = orient;

    

}

 

 

 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    returnYES; // Support all orientations.

}

相關文章
相關標籤/搜索