使用 CiGaussianBlur 模糊图像的 UISlider 也会旋转图像

Posted

技术标签:

【中文标题】使用 CiGaussianBlur 模糊图像的 UISlider 也会旋转图像【英文标题】:UISlider which blurs image with CiGaussianBlur also rotates image 【发布时间】:2014-05-17 15:59:38 【问题描述】:

我有一个范围从 0 到 30 的 UISlider。

不幸的是,当我使用 UISlider 时,图像开始模糊,但它也会旋转。

代码如下:

-(IBAction)slider:(UISlider *)sender

    float slideValue = [sender value];

    CIImage *beginImage = [[CIImage alloc] initWithImage:image];
    CIContext *context = [CIContext contextWithOptions:nil];

    CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur" keysAndValues:kCIInputImageKey, beginImage, @"inputRadius", [NSNumber numberWithFloat:slideValue], nil];
    CIImage *outputImage = [filter valueForKey:kCIOutputImageKey];

    CGImageRef cgimg = [context createCGImage:outputImage fromRect:[beginImage extent]];
    UIImage *newImg = [UIImage imageWithCGImage:cgimg];

    [imageView setImage:newImg];
    CGImageRelease(cgimg);

问题出在哪里?

提前致谢。

【问题讨论】:

你的意思是无论滑块位置如何,生成的图像都会旋转 90 度? 我记得最近看到一两个关于此类问题的问题。我认为这与 UIImage 和 CIImage 之间的转换有关。进行一些搜索,您应该会找到一些相关信息。 注意,顺便说一句,不应该重复调用CIContext *context = [CIContext contextWithOptions:nil];,因为它非常低效。调用一次并将context 放入实例变量中。 【参考方案1】:

问题出在这一行:

UIImage *newImg = [UIImage imageWithCGImage:cgimg];

这太简单了。致电[UIImage imageWithCGImage:cgimg scale:originalScale orientation:originalOrientation];(您需要为这些提供正确的值)。

【讨论】:

例如见***.com/questions/21185207/…。 不客气。有趣的问题;我编辑了标题,以便通过搜索更容易找到。

以上是关于使用 CiGaussianBlur 模糊图像的 UISlider 也会旋转图像的主要内容,如果未能解决你的问题,请参考以下文章

createCGImage(_:from :)没有使用正确的rect

CIGaussianBlur 需要太多处理[重复]

如何应用 Matlab 模糊 C 均值 (fcm) 输出进行图像分割

Scrollview to PDF查看Android中的模糊

逆滤波和维纳滤波恢复降质图像

Uformer: A General U-Shaped Transformer for Image Restoration 论文笔记