2013-02-27 100 views
0

我對GPU Image Framework的用戶來說是非常新的東西。在我的應用程序中,我使用下面的代碼來獲取圖像在bundle(knee.png)中的濾鏡效果,但是我只獲得了Black ImageView。我從這個link使用GPU圖像將包中的圖像添加到UIImageView中?

代碼告訴我在哪裏我錯在哪裏

UIImage *inputImage = [UIImage imageNamed:@"knee.png"];         
    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage]; 
    GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];     
    [stillImageSource addTarget:stillImageFilter]; 
    [stillImageSource processImage];   
    UIImage *quickFilteredImage = [stillImageFilter imageByFilteringImage:inputImage]; 
    [self.imgView setImage:quickFilteredImage]; 

回答

1

你混合您的代碼示例在完成同一件事的兩個方面。試試這個作爲過濾圖像的最簡單的方法:

UIImage *inputImage = [UIImage imageNamed:@"knee.png"];   
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];  
UIImage *quickFilteredImage = [stillImageFilter imageByFilteringImage:inputImage]; 
[self.imgView setImage:quickFilteredImage]; 

或者更長,更靈活的流動,這使得它更容易把多個過濾器:

UIImage *inputImage = [UIImage imageNamed:@"knee.png"];   
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage]; 
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];  
[stillImageSource addTarget:stillImageFilter]; 
[stillImageSource processImage]; 
UIImage *quickFilteredImage = [stillImageFilter imageFromCurrentlyProcessedOutput]; 
[self.imgView setImage:quickFilteredImage]; 

它看起來像你原來的代碼應該雖然已經產生了一個圖像。調試我會檢查輸入圖像(並將其添加到您的問題),在過濾之前將其顯示在另一個視圖中,查看GPUImageView以顯示stillImageSource,並在寫入其他UIImage之前將其作爲篩選器的目標。