1

UIImage にシャープニング フィルタを適用する際に少し問題があります。

コードは完全に機能しますが、結果の UIImage にアルファ チャネルがあるという問題があります。これにより、いくつかのパフォーマンスの問題が発生します。

これは、コンテキストとフィルターを初期化する方法です

EAGLContext *myEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
 NSMutableDictionary *options = [[NSMutableDictionary alloc] init];
[options setObject: [NSNull null] forKey: kCIContextWorkingColorSpace];
context = [CIContext contextWithEAGLContext:myEAGLContext options:options];
sharpenLuminanceFilter = [CIFilter filterWithName:@"CISharpenLuminance"];

そして、次の関数を使用して画像を生成します

- (UIImage *)applySharpingFilter:(UIImage *)originalImage withValue:(float)value{

CIImage *image = [CIImage imageWithCGImage:originalImage.CGImage];
[sharpenLuminanceFilter setValue:image forKey:@"inputImage"];
[sharpenLuminanceFilter setValue:[NSNumber numberWithFloat:value] forKey:@"inputSharpness"];
CIImage * result = sharpenLuminanceFilter.outputImage;
CGImageRef cgimg = [context createCGImage:result fromRect:[result extent]];
 double scaleFactor = [UIScreen mainScreen].scale;
UIImage *finalImage = [UIImage imageWithCGImage:cgimg scale:scaleFactor orientation:UIImageOrientationUp];
CGImageRelease(cgimg);
[sharpenLuminanceFilter setValue:nil forKey:@"inputImage"];
return finalImage;

}

結果の画像を不透明にし、アルファチャンネルを持たないように指定できる方法はありますか?

4

1 に答える 1

1

CIColorMatrixフィルターを使用できます。マトリックスを ID に設定し、バイアスを [0, 0, 0, 1] に設定すると、アルファに 1 が追加され、ソリッドになります。

アルファチャンネルがあなたのパフォーマンスにどのような影響を与えているか知りたい.

于 2012-11-29T02:02:33.003 に答える