Reputation: 659
I have an image that I am trying to apply a stack blur to and would like to apply a mask from a .png file I created to see the clear image below. I need image below to be able to be changed out at given times but the blurView with mask to remain static. This is my code I am using but I do not get the masked image in the blur.
- (void)viewDidLoad
{
[super viewDidLoad];
UIImageView *imageview = [UIImageView new];
[imageview setFrame:[self.view bounds]];
[imageview setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[imageview setImage:[UIImage imageNamed:@"myImage.jpg"]];
[imageview setContentMode:UIViewContentModeScaleAspectFill];
[self.view addSubview:imageview];
[self setBlurView:[AMBlurView new]];
[[self blurView] setFrame:CGRectMake(0.f, 0.f, [self.view bounds].size.width, [self.view bounds].size.height)];
[[self blurView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[self.view addSubview:[self blurView]];
imageview.image = [self maskImage:imageview.image withMask:[UIImage imageNamed:@"mask"]];
}
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef imgRef = [image CGImage];
CGImageRef maskRef = [maskImage CGImage];
CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask);
return [UIImage imageWithCGImage:masked];
}
Upvotes: 0
Views: 1288
Reputation: 3289
Try this cocoa controls for Blur Image
UpDated Answer
- (void)viewDidLoad
{
[super viewDidLoad];
UIImageView *imageview = [UIImageView new];
[imageview setFrame:[self.view bounds]];
[imageview setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[imageview setImage:[UIImage imageNamed:@"myImage.jpg"]];
[imageview setContentMode:UIViewContentModeScaleAspectFill];
imageview.image = [self maskImage:imageview.image withMask:[UIImage imageNamed:@"mask"]];
[self.view addSubview:imageview];
[self setBlurView:[AMBlurView new]];
[[self blurView] setFrame:CGRectMake(0.f, 0.f, [self.view bounds].size.width, [self.view bounds].size.height)];
[[self blurView] setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[self.view addSubview:[self blurView]];
}
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef imgRef = [image CGImage];
CGImageRef maskRef = [maskImage CGImage];
CGImageRef actualMask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask);
return [UIImage imageWithCGImage:masked];
}
Upvotes: 2