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

时间:2013-09-13 05:59:09

标签: ios image filter blur 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)

感谢任何建议。

1 个答案:

答案 0 :(得分:2)

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