Skip to content

Instantly share code, notes, and snippets.

@midaw
Forked from lamprosg/c-mask.mm
Created March 15, 2018 08:17
Show Gist options
  • Select an option

  • Save midaw/d3a35f559beaa42040b57b557b18c14f to your computer and use it in GitHub Desktop.

Select an option

Save midaw/d3a35f559beaa42040b57b557b18c14f to your computer and use it in GitHub Desktop.
(iOS) Image masking Objective-C / Swift
//http://www.innofied.com/implementing-image-masking-in-ios/
- (UIImage*) maskImage:(UIImage *) image withMask:(UIImage *) mask
{
CGImageRef imageReference = image.CGImage;
CGImageRef maskReference = mask.CGImage;
CGImageRef imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference),
NULL, // Decode is null
YES // Should interpolate
);
CGImageRef maskedReference = CGImageCreateWithMask(imageReference, imageMask);
CGImageRelease(imageMask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedReference];
CGImageRelease(maskedReference);
return maskedImage;
}
//USE
UIImage *image=[UIImage imageNamed:@"image2.png"];
UIImage *mask=[UIImage imageNamed:@"mask6.png"];
UIImage *newimage=[self maskImage:image withMask:mask];
self.imageView.image=newimage;
Swift
func maskImage(image:UIImage, mask:(UIImage))->UIImage{
let imageReference = image.CGImage
let maskReference = mask.CGImage
let imageMask = CGImageMaskCreate(CGImageGetWidth(maskReference),
CGImageGetHeight(maskReference),
CGImageGetBitsPerComponent(maskReference),
CGImageGetBitsPerPixel(maskReference),
CGImageGetBytesPerRow(maskReference),
CGImageGetDataProvider(maskReference), nil, true)
let maskedReference = CGImageCreateWithMask(imageReference, imageMask)
let maskedImage = UIImage(CGImage:maskedReference!)
return maskedImage
}
//USE
let image = UIImage(named: "image2.png")
let maskingImage = UIImage(named: "mask6.png")
imageView.image = maskImage(image!, mask: maskingImage!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment