2013-04-29 165 views
-3

我一直在寻找这个,但我无法找到正确的答案。高斯模糊UIImageView(iOS)

我想制作一个按钮,如果按下此按钮,图像视图将会被高斯模糊模糊。

我该怎么做?

+1

OSX? iOS版?什么版本?你有什么尝试?等等等等? Core Image是一个解决方案吗? – 2013-04-29 11:39:08

+0

谷歌,请找到'ios图像高斯模糊'的信息。 – 2013-04-29 11:40:26

+2

UIImageView应该是iOS – lukaswelte 2013-04-29 11:40:52

回答

8

你可以使用StackBluriOSGPUImage

试试这个(发现here):回答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]; 

要获得更强的模糊理由t应用此效果两次或更多:)

+0

它不起作用 – user2291669 2013-04-29 11:54:06

+0

您是否尝试独立?所以只要设置一个模糊的图像,虽然如果没有按钮被按下?你尝试过所有选项吗? – lukaswelte 2013-04-29 11:55:52

+0

@lukaswelte其工作兄弟。谢谢 – Pushkraj 2014-02-06 09:03:39

1

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

+0

为此https://github.com/lukabernardi/LBBlurredImage – Gaurav 2013-12-12 07:15:53