2016-01-27 47 views
2

我有一个白色的图像。我需要将图像中的所有白色更改为透明。我在obj-c中找到了解决方案,但它不起作用。 在图像中也是黄色和红色。将颜色从白色变为透明 - UIImage

我的代码:

let rawImageRef: CGImageRef = image.CGImage! 

    let colorMasking: [CGFloat] = [222, 255, 222, 255, 222, 255] 
    UIGraphicsBeginImageContext(image.size); 
    let maskedImageRef=CGImageCreateWithMaskingColors(rawImageRef, colorMasking); 
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0.0, image.size.height); 
    CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1.0, -1.0); 
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, image.size.width, image.size.height), maskedImageRef); 
    let result = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext();  

    self.controlView.image = result! 

但我看不到任何东西 - 图像清晰(可能)。

我在做什么错?谢谢UIKit中和可可

回答

0

颜色都被指定为浮点数从0..1,不是整数从0..255,下面应该解决您的问题:

let colorMasking : [CGFloat] = [222.0/255.0, 255.0/255.0, ...] 
+0

嗯......看文档˚F或'CGImageCreateWithMaskingColors',看起来遮罩颜色必须在与源图像相同的“空间”中指定,因此取决于源图像,您可能需要整数或浮点数。 –

+0

感谢您的回答。我试过你的代码,但结果是一样的。 – ankmara

+0

maskedImageRef是零我不明白 – ankmara

1

固定

添加代码之前创建rawImageReg:

image = UIImage(data: UIImageJPEGRepresentation(image, 1.0)!)! 

谢谢