以下是我写高斯模糊的代码
- (UIImage *)blureImage:(UIImage *)originImage withInputRadius:(CGFloat)inputRadius
{
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *image = [CIImage imageWithCGImage:originImage.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:image forKey:kCIInputImageKey];
[filter setValue:@(inputRadius) forKey: @"inputRadius"];
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
UIImage * blurImage = [UIImage imageWithCGImage:outImage];
return blurImage;
}
如图所示,图片周围会有一圈虚化的白边,这是高斯模糊的正常效果吗,我该如何去掉这个白边?
原图在这里
前几天我也遇过这个问题,你试一下改变fromRect...
CGRect extent = CGRectInset(filter.outputImage.extent, insert, insert);
CGImageRef outImage = [context createCGImage:outputImage fromRect:extent];