2013-06-12 34 views
1

我目前正在使用GPUImage框架的相機過濾器應用程序。 我已經得到了自定義相機的工作,現在我只想應用一個過濾器,我得到的uiview。所以過濾器一直在我的UIView上,它應該用過濾器保存圖片。 我會很感激,如果u能幫助我在CameraView上應用實時GpuImage

回答

4

該項目的主要自述說明你需要的具體步驟:

GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; 
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; 

GPUImageFilter *customFilter = [[GPUImageFilter alloc] initWithFragmentShaderFromFile:@"CustomShader"]; 
GPUImageView *filteredVideoView = [[GPUImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, viewWidth, viewHeight)]; 

// Add the view somewhere so it's visible 

[videoCamera addTarget:customFilter]; 
[customFilter addTarget:filteredVideoView]; 

[videoCamera startCameraCapture]; 

首先,創建GPUImageCamera實例將拉動視頻直播。然後,你創建你想要的任何過濾器(上面的代碼中的一個自定義過濾器)並將其作爲你的相機的目標。最後,設置一個GPUImageView實例,在其中顯示已過濾的攝像頭提要,並將其作爲濾鏡的目標。結果,視頻幀將沿着從攝像機到過濾器的流水線向下流動。

如果您希望能夠保存照相機中的照片,則需要使用GPUImageStillCamera而不是上面的攝像機實例。靜止照相機將提供照相機的視頻預覽,並可讓您按需採集全分辨率照片。

同樣,所有這些在框架附帶的文檔中都有明確的說明(並顯示在GitHub項目的首頁上)。