1

私はそのようなソリューションを使用してUIImage、アルファ描画で自分をマスクしています: UIImage のマスキング

問題は、後でいくつかを適用したいということCIFiltersです。ただし、フィルターの値を変更すると、アルファが から失われUIImageます。CIFilter を変更するたびに出力画像にアルファ チャネルを再適用する必要がありますか? これにより、プロセスが確実に遅くなります。

コードのサンプル: (それぞれの新しい段落は別のメソッドにあります)

// set the image
_image = [incomeImage imageWithMask:_mask]; // imageWithMask from method from link
[_myView.imageView setImage:_image];

// calculate ciimages
_inputCIImage = [[CIImage alloc] initWithCGImage:_image.CGImage options:nil];
_myView.imageView.image = _image;
_currentCIImage = _inputCIImage;

// change value in filter
[filter setValue:@(0.2f) forKey:@"someKey"];
[filter setValue:_inputCIImage forKey:kCIInputImageKey];
_currentCIImage = [filter outputImage];
CGImageRef img = [_context createCGImage:_currentCIImage fromRect:[_currentCIImage extent]];
UIImage *newImage = [UIImage imageWithCGImage:img];
4

1 に答える 1

3

これは、CIFilters を使用してのみ行うことができます。を使用する代わりに、 CIFilterimageWithMaskを使用できます。Apple CIFilter リファレンスCIBlendWithMask

于 2013-08-19T06:40:32.543 に答える