Заменить все белые / почти белые пиксели в UIImage на альфа, используя CGImage?
У меня UIImage с белым фоном. Я хотел бы заменить белый фон / пиксели альфа-прозрачными пикселями. Я рассмотрел другие вопросы о Stackru, а также документацию по Quartz, но пока не нашел последовательного "начала и конца" для этой проблемы. Как это сделать?
2 ответа
CGImageCreateWithMaskingColors
UIImage оборачивает CGImage. Возьмите CGImage, запустите его через CGImageCreateWithMaskingColors, затем либо создайте новый UIImage из результата, либо присвойте результат обратно UIImage.
Первый шаг - вам нужно определить какую-то функцию "расстояния", чтобы определить, насколько далеко пиксель от белого. Затем вам нужно определить порог расстояния, ниже которого пиксель считается белым. Затем вам нужно будет перебрать пиксели изображения, изменив все пиксели, которые считались белыми в соответствии с вашим расстоянием и порогом, на прозрачность. Основной трюк, однако, заключается в том, чтобы сделать это эффективным... касание пикселей через функции будет очень медленным; Лучше всего прикоснуться к пикселям напрямую, получив доступ к буферу памяти, в котором находятся пиксели, и пройти через них.