为什么CGImageCreateWithMaskingColors()在这种情况下返回nil?

时间:2010-08-25 07:37:48

标签: iphone core-graphics

当我使用以下代码时:

UIImage *image=[UIImage imageNamed:@"loginf1.png"];
CGImageRef rawImageRef=image.CGImage;

const float colorMasking[6] = {222, 255, 222, 255, 222, 255};

CGImageRef maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking);

maskedImageRef总是零。为什么会这样,我该怎么做才能纠正这个问题?

2 个答案:

答案 0 :(得分:4)

我遇到了同样的问题。您创建的CGImageRef每个像素只有6个字节,字节没有Alpha通道。屏蔽功能需要CGImageRef,每个像素有8个字节,其中只有6个使用,没有alpha通道。至少,我认为这就是造成它的原因。

无论如何,通过创建位图上下文,将图像绘制到该位图上下文,然后从CGBitmapContextCreateImage获取CGImageRef来修复它。

答案 1 :(得分:0)

失败的原因是因为您无法使用Alpha通道创建蒙版图像。不幸的是,你想要的是不可能的。

使用“CGImageCreateWithMaskingColors(...)”的唯一方法是为它提供一个没有alpha通道的位图上下文。这里的捕获22是不可能创建没有alpha通道的位图上下文。你不喜欢Apple吗?