1

我对 GPU Image Framework 的用户非常陌生。在我的应用程序中,我使用以下代码来获取图像的滤镜效果 bundle(knee.png) ,但我只得到 Black ImageView 。我从这个链接得到代码

告诉我哪里出错了  

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];
4

1 回答 1

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 之前作为过滤器的目标。

于 2013-02-27T15:41:54.290 回答