2013-04-29 3 views
-3

나는 이것을 찾고 있었지만 정답을 찾을 수 없었다.가우시안 흐림 및 UIImageView (iOS)

버튼을 만들고 싶습니다.이 버튼을 누르면 이미지 뷰가 가우시안 블러로 흐려집니다.

어떻게 할 수 있습니까?

+1

OSX? IOS? 어떤 버전입니까? 너 뭐 해봤 니? 등등? 코어 이미지는 해결책입니까? –

+0

Google, 'ios image gaussian blur.'에 대한 정보를 찾으십시오. –

+2

UIImageView는 iOS가 아닌 – lukaswelte

답변

8

당신은 사용할 수 StackBluriOS 또는 GPUImage

또는

이 (발견 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]; 

으로 더 강하게 흐려진다. 이 효과를 두 번 이상 적용하지 마십시오.

+0

작동하지 않습니다 – user2291669

+0

독립형으로 사용해 보셨습니까? 버튼을 누르지 않아도 흐리게 표시된 이미지 만 설정하면됩니다. 모든 옵션을 시도 했습니까? – lukaswelte

+0

@lukaswelte 그것의 일하는 형제. 감사합니다 – Pushkraj

1

CoreImage Framework (Apple Doc) 또는 GPUImage (Github Page)와 같은 타사 프레임 워크를 사용해야합니다. Gaussian Blur는 iOS 6부터 CoreImage (iOS)에서만 사용할 수 있습니다. 물론 다른 솔루션을 사용할 수도 있지만 해당 프레임 워크로 적절한 "필터링"이 수행됩니다.

+0

이 https://github.com/lukabernardi/LBBlurredImage 위해 가십시오 – Gaurav