Last active
December 15, 2015 06:58
-
-
Save xiangyuan/5219626 to your computer and use it in GitHub Desktop.
关于image mask
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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