我正在使用 CIBloom 来模糊 a 中的一些文本CGImage
,但正在发生的是 CIBloom 过滤器似乎使我的图像变得非常小。
当过滤器内核变大时效果更差。我有点预料到这一点,但我需要一种方法来关闭它,或者一个公式来调整图像的大小,以便每个字母的大小与它最初的大小完全相同。我故意在源图像上留出边距。
CIBloom过滤器之前:
CIBloom过滤器后:
模糊过滤器的代码:
CGImageRef cgImageRef = CGBitmapContextCreateImage( tex->cgContext ) ;
CIImage *cii = [CIImage imageWithCGImage:cgImageRef] ;
CIFilter *filter = [CIFilter filterWithName:@"CIBloom"] ; //CIGaussianBlur
[filter setValue:cii forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:1.1f] forKey:@"inputIntensity"];
// Large radius makes result EVEN SMALLER:
//[filter setValue:[NSNumber numberWithFloat:100.f] forKey:@"inputRadius"];
CIContext *ciContext = [CIContext contextWithOptions:nil];
CIImage *ciResult = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgIRes = [ciContext createCGImage:ciResult fromRect:[ciResult extent]];
//Clear old tex
tex->clearBacking( 0, 0, 0, 1 ) ;
// Drop CIImage result into texture raw data
CGContextDrawImage( tex->cgContext, CGRectMake(0, 0, tex->w, tex->h), cgIRes ) ;
我喜欢CIBloom
过滤器,但我需要结果与我的原始图像大小相同,而不是下采样。