7

GPUImageフレームワーク(一部の古いバージョン)を使用して2つの画像をブレンドしていました(特定の画像に境界線オーバーレイを追加しました)。最新のフレームワークバージョンに更新した後、そのようなブレンドを適用した後、空の黒い画像が表示されます。

私は次の方法を使用しています:

- (void)addBorder {
    if (currentBorder != kBorderInitialValue) {
        GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
        GPUImagePicture *imageToProcess = [[GPUImagePicture alloc] initWithImage:self.imageToWorkWithView.image];
        GPUImagePicture *border = [[GPUImagePicture alloc] initWithImage:self.imageBorder];

        blendFilter.mix = 1.0f;
        [imageToProcess addTarget:blendFilter];
        [border addTarget:blendFilter];

        [imageToProcess processImage];
        self.imageToWorkWithView.image = [blendFilter imageFromCurrentlyProcessedOutput];

        [blendFilter release];
        [imageToProcess release];
        [border release];
    }
}

何が問題ですか?

4

2 に答える 2

11

境界線の画像を処理するのを忘れています。の後[imageToProcess processImage]に、次の行を追加します。

[border processImage];

ブレンドに入力される2つの画像の場合-processImage、ブレンドフィルターに追加された後、両方で使用する必要があります。いくつかのバグを修正するために、ブレンドフィルターの動作方法を変更しました。これが、今必要な方法です。

于 2012-07-23T16:19:11.963 に答える
7

これは、2つの画像をGPUImageAlphaBlendFilterとマージするために現在使用しているコードです。

GPUImagePicture *mainPicture = [[GPUImagePicture alloc] initWithImage:image];
GPUImagePicture *topPicture = [[GPUImagePicture alloc] initWithImage:blurredImage];

GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
[blendFilter setMix:0.5];

[mainPicture addTarget:blendFilter];
[topPicture addTarget:blendFilter];

[blendFilter useNextFrameForImageCapture];
[mainPicture processImage];
[topPicture processImage];

UIImage * mergedImage = [blendFilter imageFromCurrentFramebuffer];
于 2015-06-09T11:10:45.537 に答える