我有一个带有 alpha 通道的 300 x 400 px PNG-24。大约 140kb。我想掩盖其中的某些部分,所以我创建了另一个 300 x 400 图像为 PNG-24,但只有黑色、灰色和白色,没有 alpha 通道。
奇怪的是:面具是黑色的,图像只是保持原始。没有透明度。但是在蒙版是白色的地方,图像会变成黑色,只是黑色。没有透明度。
它部分适用于非常小的图像,如 50 x 50 像素。知道这个功能可能有什么问题吗?
+ (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 theImage = image.CGImage;
CGImageRef masked = CGImageCreateWithMask(theImage, mask);
return [UIImage imageWithCGImage:masked];
}
我的背景是橙色的,所以这种颜色应该会发光。保存图像的 UIImageView 设置为 clearColor / 透明度和 opaque=NO。