Objective c CIContext内存泄漏
参数的CGImageRef和返回的CGImageRef由CGImageRelease释放,但存在内存泄漏 我认为CIContext有问题,但我找不到问题所在Objective c CIContext内存泄漏,objective-c,macos,cocoa,memory-leaks,Objective C,Macos,Cocoa,Memory Leaks,参数的CGImageRef和返回的CGImageRef由CGImageRelease释放,但存在内存泄漏 我认为CIContext有问题,但我找不到问题所在 请给我帮助在@autoReleasePool中完成 + (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter { CIImage* input_image = [CIImage imageWithCGImage:image];
请给我帮助在@autoReleasePool中完成
+ (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter {
CIImage* input_image = [CIImage imageWithCGImage:image];
NSSize image_size = NSMakeSize(CGImageGetWidth(image),
CGImageGetHeight(image));
[filter setValue:input_image forKey:kCIInputImageKey];
CIImage* output_image = [filter valueForKey:kCIOutputImageKey];
CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap_context
= CGBitmapContextCreate(nil,
image_size.width,
image_size.height,
8,
image_size.width * 4,
color_space,
(CGBitmapInfo)kCGImageAlphaNoneSkipFirst);
CGColorSpaceRelease(color_space);
CIContext* ci_bitmap_context
= [CIContext contextWithCGContext:bitmap_context
options:nil];
[ci_bitmap_context drawImage:output_image
inRect:[output_image extent]
fromRect:(CGRect){CGPointZero, image_size}];
CGImageRef result_img = CGBitmapContextCreateImage(bitmap_context);
CGContextRelease(bitmap_context);
return result_img;
}
希望对您有所帮助。谢谢您的帮助!我的好朋友。
+ (CGImageRef) newFliteredCGImage:(CGImageRef)image withCIFilter:(CIFilter*)filter {
@autoreleasepool {
CIImage* input_image = [CIImage imageWithCGImage:image];
NSSize image_size = NSMakeSize(CGImageGetWidth(image),
CGImageGetHeight(image));
[filter setValue:input_image forKey:kCIInputImageKey];
CIImage* output_image = [filter valueForKey:kCIOutputImageKey];
CGColorSpaceRef color_space = CGColorSpaceCreateDeviceRGB();
CGContextRef bitmap_context
= CGBitmapContextCreate(nil,
image_size.width,
image_size.height,
8,
image_size.width * 4,
color_space,
(CGBitmapInfo)kCGImageAlphaNoneSkipFirst);
CIContext* ci_bitmap_context
= [CIContext contextWithCGContext:bitmap_context
options:nil];
[ci_bitmap_context drawImage:output_image
inRect:[output_image extent]
fromRect:(CGRect){CGPointZero, image_size}];
CGImageRef result_img = CGBitmapContextCreateImage(bitmap_context);
return result_img;
}
}