使用CIFilters时获取Alpha通道[如何清除]

时间:2012-11-29 01:58:56

标签: cocoa-touch uiimage core-graphics core-image cifilter

我在UIImage上应用锐化滤镜时遇到了一些问题。

代码完美无缺,但生成的UIImage有Alpha通道的问题。这反过来会导致一些性能问题。

这是我初始化我的上下文和过滤器的方式

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;

}

无论如何,我可以指定我希望生成的图像是OPAQUE并且没有alpha通道吗?

1 个答案:

答案 0 :(得分:1)

您可以使用CIColorMatrix过滤器。将矩阵设置为identity并将偏差设置为[0,0,0,1],并且应该将alpha加1,这将使其变为实体。

我很想知道alpha通道以哪种方式影响你的表现。