2014-04-02 34 views
2

花了一些時間,不能真正理解問題的出處。GPUImageiOSBlurFilter imageByFilteringImage:返回零

我使用GPUImage 0.1.3(來自的CocoaPods),並有非常簡單的代碼:

GPUImageiOSBlurFilter *iosBlur = [[GPUImageiOSBlurFilter alloc] init]; 
UIImage *splashScreenImage = [UIImage imageNamed:@"Splash"]; 
UIImage *bluredImage = [iosBlur imageByFilteringImage:splashScreenImage]; 

bluredImage爲零。 我跨過代碼,iosBlur不是零,splashScreenImage不是零,幷包含適當的圖像(在調試器的快速查看中檢查)。所以我不知道哪裏出了問題。

+0

廣東話你步入 'imageByFilteringImage',並檢查它爲什麼返回零? – Konrad77

+0

我可以進入,但是當它開始使用GCD等時,我有點失落了。太多的步驟了。這是非常簡單的情況,我想可能有人有一個答案比調試GPUImage(這是一個體面的代碼,但對我來說不是很容易理解)。 – OgreSwamp

+0

嘗試更改過濾器設置,如:iosBlur.blurRadiusInPixels = 2 .; – foOg

回答

1

這是我如何解決它 - 原油,但工程。 順便說一句 - 這仍然發生在GPUImage的最新代碼,儘管我主要在模擬器中看到問題。

int errorCount = 0; 
    UIImage *blurImage; 
    //Loop workaround for some unknown GPUImage issue where sometimes the result is nil. 
    while (! (blurImage = [imageFilter imageByFilteringImage:image])) { 
     ++errorCount; 
    } 

    if (errorCount > 0) { 
     NSLog(@"GPUImageiOSBlurFilter imageByFilteringImage error count: %i", errorCount); 
    } 
+0

我用GPUImageCannyEdgeDetectionFilter看過類似的問題。據我可以告訴它也只發生在模擬器上。這個解決方案爲我解決了它。謝謝。 –

0

從GPUImageOutput.h

// Platform-specific image output methods 
// If you're trying to use these methods, remember that you need to set -useNextFrameForImageCapture 
// before running -processImage or running video and calling any of these methods, 
// or you will get a nil image 
#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE 
- (UIImage *)imageByFilteringImage:(UIImage *)imageToFilter; 
+0

據我瞭解,這與這個特定問題無關。由於通常連續兩個電話解決了這個問題,而且更多的問題只發生在模擬器上。 –