2013-02-27 99 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之前将其作为筛选器的目标。