Как очистить пурпурную часть UIImage и сделать ее прозрачной?
Я просмотрел многочисленные ответы и ссылки на SO, и ничего не работает (например, Как сделать один цвет прозрачнымв UIImage? ответ 1 удаляет все, кроме красного, ответ 2, очевидно, не работает из-за Почему CGImageCreateWithMaskingColors () возвращает ноль в этом случае? ).
Обновление:
Если я использую CGImageCreateWithMaskingColors с UIImage, я получаю нулевое значение.Если я удаляю альфа-канал (представляю изображение в формате JPEG и читаю его обратно), CGImageCreateWithMaskingColors возвращает изображение, закрашенное черным фоном.
Update2, код:
Возвращает ноль:
const float colorMasking[6] = {222, 255, 222, 255, 222, 255};
CGImageRef imageRef = CGImageCreateWithMaskingColors(anchorWithMask.CGImage, colorMasking);
NSLog(@"image ref %@", imageRef);
// this is going to return a nil imgref.
UIImage *image = [UIImage imageWithCGImage:imageRef];
Возвращает изображение с черным фоном (что является нормальным, поскольку нет альфа-канала):
UIImage *inputImage = [UIImage imageWithData:UIImageJPEGRepresentation(anchorWithMask, 1.0)];
const float colorMasking[6] = {222, 255, 222, 255, 222, 255};
CGImageRef imageRef = CGImageCreateWithMaskingColors(inputImage.CGImage, colorMasking);
NSLog(@"image ref %@", imageRef);
// imgref is NOT nil.
UIImage *image = [UIImage imageWithCGImage:imageRef];
Обновление3:
Я заработал, добавив альфа-канал после процесса маскирования.