Cocoa touch 使用CIFilters时获取alpha通道[如何清除]

Cocoa touch 使用CIFilters时获取alpha通道[如何清除],cocoa-touch,uiimage,core-graphics,core-image,cifilter,Cocoa Touch,Uiimage,Core Graphics,Core Image,Cifilter,我在UIImage上应用锐化过滤器时遇到了一些问题 代码工作得很好,但问题是生成的UIImage具有Alpha通道。这反过来会导致一些性能问题 这就是我初始化上下文和过滤器的方式 EAGLContext *myEAGLContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; NSMutableDictionary *options = [[NSMutableDictionary alloc] init]; [

我在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;
}

我是否可以指定生成的图像为不透明且没有alpha通道?

您可以使用过滤器。将矩阵设置为identity,将bias设置为[0,0,0,1],它应该将1添加到alpha,这将使其成为实心

我很想知道alpha通道以何种方式影响您的性能。

您可以使用过滤器。将矩阵设置为identity,将bias设置为[0,0,0,1],它应该将1添加到alpha,这将使其成为实心


我很想知道alpha通道是以何种方式影响您的性能的。

这只是使整个画面变得更白,并没有消除alpha通道。当您滚动时,该问题会影响性能。如果您的图像具有透明度,则速度会变慢。您的频道顺序是否与RGBA不同?如果是这样,您可能需要更改偏移向量,以便1与alpha通道处于相同位置。我尝试了所有组合,结果图像始终具有alpha通道。有没有办法在创建CGImage时删除alpha通道?我想你可以创建一个没有alpha通道的新图像,然后调用在那里绘制。这只会使整个图像更白,并且没有消除alpha通道。当您滚动时,该问题会影响性能。如果您的图像具有透明度,则速度会变慢。您的频道顺序是否与RGBA不同?如果是这样,您可能需要更改偏移向量,以便1与alpha通道处于相同位置。我尝试了所有组合,结果图像始终具有alpha通道。有没有办法在创建CGImage时删除alpha通道?我想您可以创建一个没有alpha通道的新通道,然后调用在那里绘制它。