Почему CGImageCreateWithMaskingColors () возвращает ноль в этом случае? - PullRequest
4 голосов
/ 25 августа 2010

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

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 ]

4 голосов
/ 17 октября 2010

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

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

0 голосов
/ 23 февраля 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...