2013-04-29 78 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