Как мне получить доступ к необработанным данным UIImage ...?
Посмотрите на документацию .
Вы обнаружите, что нет способа получить необработанные данные за UIImage. Самое близкое, что вы можете получить, это CGImage . Это позволит вам получить поставщика данных, который вы можете запросить копию необработанных данных.
Проблема с этим решением заключается в том, что вам необходимо обрабатывать все возможные конфигурации (RGBA, ARGB, RGB_, _RGB, RGB, 8-битный канал, 16-битный канал и т. Д.), Которые поддерживает CGImage. Это много работы. Если вы этого не сделаете, то однажды вы будете удивлены изображением, которое каким-то образом не работает с вашим кодом, или обновлением ОС, изменяющим способ создания CGImage.
Функция CGImageCreateWithMaskingColors
, предложенная по одному из других вопросов, с которыми вы связаны, является правильным решением.
Одна вещь, которая сбивает вас с толку, это то, что значения, показанные в принятый ответ на этот вопрос , как правило, являются поддельными: они находятся вне диапазона. Руководство по программированию Quartz 2D содержит более подробную информацию как минимум о двух . местах .
Я также не согласен с включением этого ответа в метод createMask:
, поскольку он не выполняет то, что говорит, что он делает, и едва полезен вообще (его стоит иметь, только если исходное изображение может быть CMYK, но насколько вероятно, что в приложении для iPhone?). Пропустите его и создайте изображение маски непосредственно из CGImage UIImage.
Этот ответ, вероятно, будет хорошо работать, как только вы исправите эти две проблемы.