我正在使用CIFilter来获取模糊图像,但是为什么输出图像总是大于输入图像



代码如下:

CIImage *imageToBlur = [CIImage imageWithCGImage: self.pBackgroundImageView.image.CGImage];
CIFilter *blurFilter = [CIFilter filterWithName: @"CIGaussianBlur" keysAndValues: kCIInputImageKey, imageToBlur, @"inputRadius", [NSNumber numberWithFloat: 10.0], nil];
CIImage *outputImage = [blurFilter outputImage];
UIImage *resultImage = [UIImage imageWithCIImage: outputImage];
例如,输入图像的大小为 (640.000000,1136.000000),

但输出图像的大小为 (700.000000,1196.000000)

任何建议不胜感激。

这是对你问题的超晚回答,但主要问题是你认为 CIImage 是一个图像。它不是,它是图像的"配方"。因此,当您对其应用模糊滤镜时,Core Image 会计算出要显示模糊的每个最后一个像素,您需要更大的画布。绘制整个图像的估计大小称为"范围"。从本质上讲,每个像素都在变得越来越"胖",这意味着最终的范围将比原始画布更大。由您决定范围的哪一部分对您的绘制例程有用。

最新更新