2013-04-14 55 views
4

使用下面的代碼(在viewDidLoad),當我第一次從另一個視圖延續到這個靜態攝像機視圖(按下按鈕),一切工作正常。然後,我派出一位代表,並從以前的觀點中駁回了這一觀點。GPUImageView黑色當ViewController重新加載

但是,當我再次按下第一個視圖上的按鈕以再次顯示相機視圖時,屏幕顯示爲黑色。我已將屬性更改爲實例變量,確保預覽視圖在每一步都存在,等等。

但是,當我拍照時(即使當屏幕是黑色的,並且它正在註冊焦點和曝光活動並響應觸摸)並顯示一幅顯示圖像的模態視圖以供審閱,我確實看到了我應該看到的內容。當我解散模式時,相機視圖再次以無黑色工作。

那麼,我在這裏錯過了什麼?這在框架,IB,故事板等方面應該很簡單。謝謝!

stillCamera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPresetPhoto cameraPosition:AVCaptureDevicePositionBack]; 
stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; 

UIImage *inputImage = [UIImage imageNamed:@"blank-1x1.png"]; 
sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES]; 
[sourcePicture processImage]; 

filter = [[GPUImageChromaKeyBlendFilter alloc] init]; 
[(GPUImageChromaKeyBlendFilter *)filter setColorToReplaceRed:0.0 green:1.0 blue:0.0]; 
[(GPUImageChromaKeyBlendFilter *)filter setThresholdSensitivity:0.37f]; 

[stillCamera addTarget:filter]; 
[sourcePicture addTarget:filter]; 

[filter addTarget:videoPreviewView]; 
[stillCamera startCameraCapture]; 
+0

有這個完全相同的問題。 GPUImageView的內容是黑色的,但我可以看到圖像數據正在通過過濾器鏈正確移動,因爲我可以存儲生成的UIImage並將其保存爲照片滾動。黑度從不顯示視圖控制器第一次出現,而不是每次顯示視圖控制器(稍等一會再顯示它似乎使它不太可能失敗)。 – Bemmu

+0

顯示包含gpuimageview的視圖控制器並解散它幾十次後,我最終也發生了崩潰。可能是一個提示:http://i.imgur.com/4RK2qkb.png – Bemmu

+0

我發現這隻發生,如果我在我的場景中有一個GPUImageView,並通過引用插座引用,然後給該引用[self.filter addTarget :(GPUImageView *)self.gpuImageView];相反,如果我將ViewController的根視圖(?)設置爲GPUImageView,然後在[self.filter addTarget:(GPUImageView *)self.view]中使用該視圖。有用。 – Bemmu

回答

0

我建議仔細閱讀本線程,並特別注意此評論:https://github.com/BradLarson/GPUImage/issues/130#issuecomment-5936685。希望它也能幫助你。

+0

我在所有排列中都使用了該代碼(prepareForImageCapture),並且大多數情況下我在框架代碼中的destroyFilterFBO中獲得了malloc double免費錯誤。什麼工作是Bemmu的建議,使imageView視圖控制器的根視圖,而不是圖像視圖是子視圖。恕我直言,這應該不重要,我可能需要一個取景器作爲其他視圖內的子視圖。 – user1139479

相關問題