1

GPUImageFrameworkのユーザーは非常に新しいです。私のアプリケーションでは、次のコードを使用して、bundle(knee.png)の画像のフィルター効果を取得しますが、取得できるのはBlackImageViewのみです。このリンクからコードを取得します

どこが悪かったのか見せて  

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

コードサンプルで同じことを実現する2つの方法を組み合わせています。画像をフィルタリングする最も簡単な方法としてこれを試してください。

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 に答える