Заменить все белые / почти белые пиксели в UIImage на альфа, используя CGImage? - PullRequest
1 голос
/ 12 мая 2010

У меня UIImage с белым фоном.Я хотел бы заменить белый фон / пиксели альфа-прозрачными пикселями.Я рассмотрел другие вопросы по StackOverflow, а также документацию по Quartz, но пока не нашел последовательного «начала и конца» для этой проблемы.Как это сделать?

Ответы [ 2 ]

1 голос
/ 12 мая 2010
CGImageCreateWithMaskingColors

UIImage оборачивает CGImage. Возьмите CGImage, запустите его через CGImageCreateWithMaskingColors, затем создайте новый UIImage из результата или присвойте результат обратно UIImage.

1 голос
/ 12 мая 2010

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

...