作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 CIBloom 模糊 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
滤镜,但我需要结果与我的原始图像大小相同,而不是缩减采样。
最佳答案
好吧,默认内核大小 10 添加到图像的额外空间是 21x28。
对于 K=10,生成的图像每边增加 21 像素,顶部和底部增加 28 像素。请记住,背景是 768x1024 像素,看起来放大后生成的图像是 810x1080。
玩弄这个,我想出了以下内容
CGContextDrawImage( tex->cgContext, CGRectMake(-30, -36, tex->w+2*30, tex->h+2*36), cgIRes ) ;
这看起来非常近似(必须有一个公式)并引入了一些失真,但它可以使图像几乎与原始大小相同,而不会引入边框。
关于cgimage - CIBloom 使图像变小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726967/
我正在使用 CIBloom 模糊 CGImage 中的一些文本,但发生的情况是 CIBloom 过滤器似乎使我的图像变得非常小 . 当滤波器内核变大时效果更差。我有点预料到这一点,但我需要一种方法来关
我是一名优秀的程序员,十分优秀!