我有一個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