懶惰了一個月了,今天寫寫項目里遇到的一個問題。
圖片a 和圖片b相互疊加,a圖片四周是白色的不規則圖形,里面填充黑色。 b圖片是一張正常圖片。
需求是疊加在一起,要求將b圖片根據a圖片的黑色形狀 扣出來。
圖a: 圖b:
扣出來的效果圖:
上代碼:
-(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 sourceImage = [image CGImage]; CGImageRef imageWithAlpha = sourceImage; //add alpha channel for images that don't have one (ie GIF, JPEG, etc...) //this however has a computational cost if (CGImageGetAlphaInfo(sourceImage) == kCGImageAlphaNone) { // imageWithAlpha =CopyImageAndAddAlphaChannel(sourceImage); } CGImageRef masked = CGImageCreateWithMask(imageWithAlpha, mask); CGImageRelease(mask); if (sourceImage != imageWithAlpha) { CGImageRelease(imageWithAlpha); } UIImage* retImage = [UIImage imageWithCGImage:masked]; CGImageRelease(masked); return retImage; }
GitHub地址:https://github.com/zhuxinleibandou/-