gpt4 book ai didi

cgimage - CIBloom 使图像变小

转载 作者:行者123 更新时间:2023-12-02 02:04:44 25 4
gpt4 key购买 nike

我正在使用 CIBloom 模糊 CGImage 中的一些文本,但发生的情况是 CIBloom 过滤器似乎使我的图像变得非常小 .

当滤波器内核变大时效果更差。我有点预料到这一点,但我需要一种方法来关闭它,或者需要一个公式来调整图像大小,以便每个字母都与原来的大小完全相同。我故意在源图像上留边距。

在 CIBloom 过滤器之前:

a

CIBloom 过滤器之后:

enter image description here

模糊过滤器的代码:

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。

enter image description here

对于 K=10,生成的图像每边增加 21 像素,顶部和底部增加 28 像素。请记住,背景是 768x1024 像素,看起来放大后生成的图像是 810x1080。

玩弄这个,我想出了以下内容

CGContextDrawImage( tex->cgContext, CGRectMake(-30, -36, tex->w+2*30, tex->h+2*36), cgIRes ) ;

这看起来非常近似(必须有一个公式)并引入了一些失真,但它可以使图像几乎与原始大小相同,而不会引入边框。

enter image description here

关于cgimage - CIBloom 使图像变小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15726967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com