Почему 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?