高斯模糊UIImageView(iOS)

我一直在寻找这个,但我无法find一个正确的答案。

我想制作一个button,如果你按下这个button,图像视图将被高斯模糊模糊。

我怎样才能做到这一点?

你可以使用StackBluriOS或GPUImage

要么

试试这个(在这里find):从Stackoverflow的答案

@interface UIImage (ImageBlur) - (UIImage *)imageWithGaussianBlur; @end @implementation UIImage (ImageBlur) - (UIImage *)imageWithGaussianBlur { float weight[5] = {0.2270270270, 0.1945945946, 0.1216216216, 0.0540540541, 0.0162162162}; // Blur horizontally UIGraphicsBeginImageContext(self.size); [self drawInRect:CGRectMake(0, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[0]]; for (int x = 1; x < 5; ++x) { [self drawInRect:CGRectMake(x, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[x]]; [self drawInRect:CGRectMake(-x, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[x]]; } UIImage *horizBlurredImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // Blur vertically UIGraphicsBeginImageContext(self.size); [horizBlurredImage drawInRect:CGRectMake(0, 0, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[0]]; for (int y = 1; y < 5; ++y) { [horizBlurredImage drawInRect:CGRectMake(0, y, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[y]]; [horizBlurredImage drawInRect:CGRectMake(0, -y, self.size.width, self.size.height) blendMode:kCGBlendModePlusLighter alpha:weight[y]]; } UIImage *blurredImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); // return blurredImage; } 

像这样使用它:

 UIImage *blurredImage = [originalImage imageWithGaussianBlur]; 

为了获得更强的模糊效果,请使用此效果两次或更多:)

您需要使用CoreImage Framework( Apple Doc )或任何第三方框架(如GPUImage( Github Page ))。 Gaussian Blur仅在CoreImage(iOS)中可用,只能从iOS 6开始。当然,您可以使用任何其他解决scheme,但是正确的“过滤”是使用这些框架完成的。