UIImage изменить сырые пиксели с белого на прозрачный? - PullRequest

1 Ответ

1 голос
/ 16 апреля 2010

Как мне получить доступ к необработанным данным UIImage ...?

Посмотрите на документацию .

Вы обнаружите, что нет способа получить необработанные данные за UIImage. Самое близкое, что вы можете получить, это CGImage . Это позволит вам получить поставщика данных, который вы можете запросить копию необработанных данных.

Проблема с этим решением заключается в том, что вам необходимо обрабатывать все возможные конфигурации (RGBA, ARGB, RGB_, _RGB, RGB, 8-битный канал, 16-битный канал и т. Д.), Которые поддерживает CGImage. Это много работы. Если вы этого не сделаете, то однажды вы будете удивлены изображением, которое каким-то образом не работает с вашим кодом, или обновлением ОС, изменяющим способ создания CGImage.

Функция CGImageCreateWithMaskingColors , предложенная по одному из других вопросов, с которыми вы связаны, является правильным решением.

Одна вещь, которая сбивает вас с толку, это то, что значения, показанные в принятый ответ на этот вопрос , как правило, являются поддельными: они находятся вне диапазона. Руководство по программированию Quartz 2D содержит более подробную информацию как минимум о двух . местах .

Я также не согласен с включением этого ответа в метод createMask:, поскольку он не выполняет то, что говорит, что он делает, и едва полезен вообще (его стоит иметь, только если исходное изображение может быть CMYK, но насколько вероятно, что в приложении для iPhone?). Пропустите его и создайте изображение маски непосредственно из CGImage UIImage.

Этот ответ, вероятно, будет хорошо работать, как только вы исправите эти две проблемы.

...