在我的一个iOS应用程序中,我试图使用CGImageMask剪切图像的CGImageMask 。 我用下面的代码成功地掩盖了图像: – (UIImage *)maskImage:(UIImage *)referenceImage withMask:(UIImage *)maskImage { CGImageRef maskRef = maskImage.CGImage; CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), CGImageGetHeight(maskRef), CGImageGetBitsPerComponent(maskRef), CGImageGetBitsPerPixel(maskRef), CGImageGetBytesPerRow(maskRef), CGImageGetDataProvider(maskRef), NULL, false); CGImageRef masked = CGImageCreateWithMask([referenceImage CGImage], mask); return [UIImage imageWithCGImage:masked]; } 所以,我的形象将是: myImageView.image = [self maskImage:[UIImage imageNamed:@"image.png"] withMask:[UIImage imageNamed:@"mask.png"]]; 问题:输出图像与参考图像('image.png')大小相同,周围有透明区域。 但是我想避开那些透明区域,裁剪结果图像。 我怎样才能做到这一点? 有几个面具,面具框架是不相似的。 我在此附上问题概览的参考图片。 请帮助我的朋友。 提前致谢。
用下面的代码,我成功地遮住了我的绘图的一部分,但这是我想要的蒙版的反面。 这掩盖了绘图的内部部分,我想掩盖外部。 有没有简单的方法来颠倒这个面具? 下面的myPath是一个UIBezierPath 。 CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; CGMutablePathRef maskPath = CGPathCreateMutable(); CGPathAddPath(maskPath, nil, myPath.CGPath); [maskLayer setPath:maskPath]; CGPathRelease(maskPath); self.layer.mask = maskLayer;