2013-02-22 2 views
0

Я использую CGImageCreateWithMaskingColors() для удаления определенного цвета с UIImage. Процесс удаления цвета работает нормально, но прозрачная область изображения становится черной после маскирования. Посмотрите на код, вставленный ниже.cgimagecreatewithmaskingcolors изменяет всю прозрачную область на черный

CGImageRef imageRef = self.editedImage.CGImage; 
CGImageRef myColorMaskedImage = CGImageCreateWithMaskingColors(imageRef, myMaskingColors); 

UIImage *newImage = [self normalizeWithAlpha:[UIImage imageWithCGImage:myColorMaskedImage]]; 
CGImageRelease(myColorMaskedImage); 

ответ

0

Вы должны сделать второй маскирующий проход, чтобы замаскировать черный:

float colorMaskingLow[6] = {0, low, 0, low, 0, low}; 
    float colorMaskingHigh[6] = {high, 255, high, 255, high, 255}; 

    UIImage *image = [self maskColors:colorMaskingHigh inImage:image]; 
    return [self maskColors:colorMaskingLow inImage:image]; 

(где функция maskColors:inImage: является то, что вы задаете выше)

Смежные вопросы