Skip to content

Instantly share code, notes, and snippets.

@xiangyuan
Last active December 15, 2015 06:58
Show Gist options
  • Select an option

  • Save xiangyuan/5219626 to your computer and use it in GitHub Desktop.

Select an option

Save xiangyuan/5219626 to your computer and use it in GitHub Desktop.
关于image mask
1、关于使用 CGImageCreateWithMask(<#CGImageRef image#>, <#CGImageRef mask#>)来进行掩码时。
情况一:第二个参数是用CGImageMaskCreate创建生成的 image mask。
那么就会是黑色部分出现,白色部分消失。
CGImageRef topRef = mask.CGImage;
CGImageRef maskImage = CGImageMaskCreate(CGImageGetWidth(topRef), CGImageGetHeight(topRef), CGImageGetBitsPerComponent(topRef), CGImageGetBitsPerPixel(topRef), CGImageGetBytesPerRow(topRef), CGImageGetDataProvider(topRef), CGImageGetDecode(topRef), false);
// CGImageRef target = CGImageCreateWithMask(origin.CGImage, maskImage);
// UIImage * image = [UIImage imageWithCGImage:target];
//release
CGImageRelease(maskImage);
情况二:第二个参数是用cgimagecreate创建生成的一个image对象时,
那么就会和情况一产生相反的结果。多半可能会不显示.
注意:外部图片不能直接用来作为mask的图像。
2、色彩来做为Mask
3、context clip来实现Mask
使用两个图片实现圆角图形
如下代码
UIImage *background = [UIImage imageNamed:@"logo_back"];
UIImage *front = [UIImage imageNamed:@"profile"];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetBlendMode(context, kCGBlendModeDarken);
CGRect size = CGRectMake(0.f, 0.f, background.size.width, background.size.height);
[background drawAtPoint:CGPointMake(0.f, 0.f)];
CGContextTranslateCTM(context, 0.f, background.size.height);
CGContextScaleCTM(context, 1.f, -1);
CGContextDrawImage(context, size, front.CGImage);
CGContextRestoreGState(context);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment