Tôi đang cố làm mờ hình ảnh bằng CoreImage trên iOS 6 mà không có viền đen đáng chú ý. Apple documentation nói rằng sử dụng một bộ lọc CIAffineClamp có thể đạt được điều này nhưng tôi không thể có được một hình ảnh đầu ra từ bộ lọc. Đây là những gì tôi đã thử, nhưng tiếc là một hình ảnh trống được tạo ra khi tôi truy cập [clampFilter outputImage]. Nếu tôi chỉ thực hiện làm mờ một hình ảnh được tạo ra, nhưng với biên giới inset tối.CIGaussianBlur và CIAffineClamp trên iOS 6
CIImage *inputImage = [[CIImage alloc] initWithCGImage:self.CGImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGAffineTransform transform = CGAffineTransformIdentity;
CIFilter *clampFilter = [CIFilter filterWithName:@"CIAffineClamp"];
[clampFilter setValue:inputImage forKey:kCIInputImageKey];
[clampFilter setValue:[NSValue valueWithBytes:&transform objCType:@encode(CGAffineTransform)] forKey:@"inputTransform"];
CIImage *outputImage = [clampFilter outputImage];
CIFilter *blurFilter = [CIFilter filterWithName:@"CIGaussianBlur"
keysAndValues:kCIInputImageKey, outputImage, @"inputRadius", [NSNumber numberWithFloat:radius], nil];
outputImage = [blurFilter outputImage];
CGImageRef cgimg = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *blurredImage = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
Ngữ cảnhRect là vấn đề. Tôi thực sự cố định nó bằng cách thay đổi dòng này để sử dụng mức inputImage khi tạo CGImage ở cuối: 'CGImageRef cgimg = [context createCGImage: outputImage fromRect: inputImage.extent];' – bryguy1300