如何在ios中使用图像屏蔽图像?
我有一个正方形的图像,代表一个被白色包围的厚圆圈,另一个正方形的图像代表一张脸。我想用圆圈遮罩第二幅图像,这样最终的图像就是第二幅图像中的厚圆圈。如何在目标c中实现这一点?最后我使用了这个函数如何在ios中使用图像屏蔽图像?,ios,image,mask,Ios,Image,Mask,我有一个正方形的图像,代表一个被白色包围的厚圆圈,另一个正方形的图像代表一张脸。我想用圆圈遮罩第二幅图像,这样最终的图像就是第二幅图像中的厚圆圈。如何在目标c中实现这一点?最后我使用了这个函数 + (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGImageRef imgRef = [image CGImage]; CGImageRef maskRef = [maskImage CGIm
+ (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage
{
CGImageRef imgRef = [image CGImage];
CGImageRef maskRef = [maskImage CGImage];
CGImageRef actualMask = CGImageMaskCreate(
CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask(imgRef, actualMask);
return [UIImage imageWithCGImage:masked];
}
这个密码呢
// Getting an image imgResult that is center of imgToBeMasked with the surrounding transparent
NSString *filePath_imgCircleMask = [[NSBundle mainBundle] pathForResource:@"imgCircleMask" ofType:@"png"];
NSString *filePath_imgToBeMasked = [[NSBundle mainBundle] pathForResource:@"imgToBeMasked" ofType:@"png"];
NSString *filePath_imgCircleHole = [[NSBundle mainBundle] pathForResource:@"imgCircleHole" ofType:@"png"];
UIImage *imgCircleMask = [UIImage imageWithContentsOfFile:filePath_imgCircleMask];
UIImage *imgToBeMasked = [UIImage imageWithContentsOfFile:filePath_imgToBeMasked];
UIImage *imgCircleHole = [UIImage imageWithContentsOfFile:filePath_imgCircleHole];
UIImage *imgResult =[funzioni maskImage:imgToBeMasked withMask:imgCircleMask];
// Merge imgResult with imgCircleHole so to obtain the img to be masked inside the circle
CGSize size = CGSizeMake(imgResult.size.width, imgResult.size.height);
UIGraphicsBeginImageContext(size);
[imgCircleHole drawInRect:CGRectMake(0,0,size.width, size.height)];
[imgResult drawInRect:CGRectMake(0,0,size.width, size.height)];
finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
以下是图片。保存它们并打开它以查看透明度。(此处,imgCircleMask是白色背景上的白色图像)
imgCircleMask
内圆孔
蒙面的
imgResult
最终澄清
希望能帮助任何人