Получить изображение по маске можно с помощью CoreGraphics
Пример можно посмотреть
тут. Если Вам не нужно изображение, а нужно всего лишь этот трюк провернуть в ui, то посмотрите на QuartzCore (гуглить по тегам mask CALayer)
Теперь что касается маски... Я не совсем понял насколько она у Вас может быть вариантивноq, но если это квадрат, то его можно просто отрисовать через coreGraphics (создаете контекст и через CGContextAddRect рисуете нужную Вам маску)
Или же, если она у Вас нарисована в calayer, отрендерить в ту же картинку как приведено
тут
Еще есть вариант с CoreImage и фильтром
CIBlendWithAlphaMask , ну тут опять же, Вам нужно будет создать маску
CoreImage теоретичеки будет работать быстрее... .
Я к сожалению плохо знаком со сторонними библиотеками по компьютерной графике, но рекомендую Вам покопаться в чем-то аля OpenCV