Почему CGImageCreateWithMaskingColors() в этом случае возвращает nil?

Когда я использую следующий код:

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 ответа

У меня такая же проблема. CGImageRef у вас есть только 6 байтов для каждого пикселя с байтом без альфа-канала. Маскирующая функция нуждается в CGImageRef с 8 байтами для каждого пикселя, только 6 из них используются, без альфа-канала. По крайней мере, я думаю, что это является причиной этого.

В любом случае, исправьте это, создавая растровый контекст, рисуя ваше изображение в этом растровом контексте, а затем получая ваш CGImageRef от CGBitmapContextCreateImage,

Причина этого заключается в том, что вы НЕ МОЖЕТЕ создать изображение маски с альфа-каналом. К сожалению, то, что вы пытаетесь сделать, НЕ возможно.

Единственный способ использовать "CGImageCreateWithMaskingColors(...)" для предоставления ему растрового контекста БЕЗ альфа-канала. Подвох 22 здесь в том, что невозможно создать растровый контекст БЕЗ альфа-канала. Разве ты не любишь Apple?

Другие вопросы по тегам