我有一个300 x 400像素PNG-24 alpha通道。大约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/transparency和opaque = NO。
谢谢!我想我的愚蠢的图形应用程序不会创建一个alpha通道,如果我没有透明像素,即使我保存时检查“透明”。这是问题! – Thanks 2009-07-16 09:41:23