Как преобразовать альфа-канал UIImage / CGImageRef в маску?

Как мне извлечь альфа-канал UIImage или CGImageRef и преобразовать его в маску, которую я могу использовать с CGImageMaskCreate?

Например:

example image

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

Пример поведения этого находится в UIBarButtonItem, когда вы предоставляете ему изображение значка. Согласно документам Apple, в нем говорится:

Изображения, отображаемые на панели, взяты из этого изображения. Если это изображение слишком велико для размещения на панели, оно масштабируется по размеру. Обычно размер изображения панели инструментов и панели навигации составляет 20 x 20 точек. Альфа-значения в исходном изображении используются для создания изображений - непрозрачные значения игнорируются.

UIBarButtonItem принимает любое изображение и смотрит только на альфа-канал, а не на цвета изображения.

14
задан Ben Zotto 14 November 2011 в 21:04
поделиться