这个教程使用带有两个参数的方法:image
和maskImage
,当你调用该方法时必须设置这些参数。例如,如果该方法在同一个类中且图片在你的捆绑包中,则调用示例可能如下:
注意 - 令人惊讶的是,这些图片甚至不必是相同大小的。
...
UIImage *image = [UIImage imageNamed:@"dogs.png"];
UIImage *mask = [UIImage imageNamed:@"mask.png"];
UIImage *maskedImage = [self maskImage:image withMask:mask];
...
- (UIImage*) maskImage:(UIImage *)image 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 maskedImageRef = CGImageCreateWithMask([image CGImage], mask);
UIImage *maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(mask);
CGImageRelease(maskedImageRef);
return maskedImage;
}
在您提供了代码之后,我已经添加了一些数字作为参考注释。您仍然有两个选择。整个东西是一个方法,在某个地方进行调用。您不需要在其中创建图像:这将使该方法的可重用性降为零。
要使您的代码运行,请更改方法头(1.)为
- (UIImage *)maskImageMyImages {
然后将2.中的变量名改为:
UIImage *maskImage = [UIImage imageNamed:@"mask.png"]
这个方法会返回经过遮罩处理的图像,因此您需要在某个位置调用该方法。
您能否展示一下您调用该方法的代码?