Ответ 1
См. описание в CGImageCreateWithMask
в CGImage Reference:
Результирующее изображение зависит от того, является ли параметр маски маской изображения или изображением. Если параметр маски является маской изображения, исходные образцы маски изображения действуют как обратное альфа-значение. То есть, если значение образца источника в маске изображения равно S, тогда соответствующая область в изображении смешивается с местом назначения с использованием альфа-значения (1-S). Например, если S равно 1, то область не окрашивается, а если S равно 0, область полностью окрашена.
Если параметр маски является изображением, то он служит в качестве альфа-маски для смешивания изображения с местом назначения. Исходные образцы маски "действуют как альфа-значение. Если значение исходной выборки в маске равно S, то соответствующая область в изображении смешивается с адресатом с альфой S. Например, если S равно 0, то область не окрашивается, а если S равно 1, область полностью окрашена.
Кажется, что по какой-то причине маска изображения рассматривается как mask image
для маскировки при сохранении. Согласно:
- UIImagePNGRпредставление и маскированные изображения
- http://lists.apple.com/archives/quartz-dev/2010/Sep/msg00038.html
чтобы правильно сохранить с помощью UIImagePNGRepresentation
, существует несколько вариантов:
- Используйте обратную версию маски изображения.
- Используйте "образ маски" вместо "маски изображения".
- Отобразить контекст растрового изображения, а затем сохранить его, например, упомянутый epatel.