Ios 如何删除UIImage背景色并使其透明?

Ios 如何删除UIImage背景色并使其透明?,ios,cocoa-touch,uikit,uiimage,Ios,Cocoa Touch,Uikit,Uiimage,我想删除UIImage背景色并使其透明 我尝试了这个,但是下面的代码只是将白色背景颜色更改为黑色 UIImage* createColorMaskedImage(UIImage* originalImage){ float maskingColors[6] = {0xEE, 0xFF, 0xEE, 0xFF, 0xEE, 0xFF}; CGImageRef maskedImageRef = CGImageCreateWithMaskingColors(originalImage.CGIma

我想删除UIImage背景色并使其透明

我尝试了这个,但是下面的代码只是将白色背景颜色更改为黑色

   UIImage* createColorMaskedImage(UIImage* originalImage){
float maskingColors[6] = {0xEE, 0xFF, 0xEE, 0xFF, 0xEE, 0xFF};
CGImageRef maskedImageRef = CGImageCreateWithMaskingColors(originalImage.CGImage,     maskingColors);
UIImage* maskedImage = [UIImage imageWithCGImage:maskedImageRef];
CGImageRelease(maskedImageRef);
return maskedImage;
}


UIImage *watchImage = [UIImage imageNamed:@"watch2.jpg"];
// Mask image
colorMaskImage_ = createColorMaskedImage(watchImage);
//create image view and set its poistion.
UIImageView* maskImageView = [[UIImageView alloc] initWithImage:colorMaskImage_];
CGRect frame = maskImageView.frame;
frame.origin = CGPointMake(80,60);
maskImageView.frame = frame;
maskImageView.backgroundColor = [UIColor clearColor];
[self.view addSubview:maskImageView];
[maskImageView release];

您的
watch2.jpg
可能没有alpha值,这将使其具有透明区域。

Swift版本

func makeTransparent(image: UIImage) -> UIImage? {
    guard let rawImage = image.cgImage else { return nil}
    let colorMasking: [CGFloat] = [255, 255, 255, 255, 255, 255]
    UIGraphicsBeginImageContext(image.size)
    
    if let maskedImage = rawImage.copy(maskingColorComponents: colorMasking),
        let context = UIGraphicsGetCurrentContext() {
        context.translateBy(x: 0.0, y: image.size.height)
        context.scaleBy(x: 1.0, y: -1.0)
        context.draw(maskedImage, in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
        let finalImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return finalImage
    }
    
    return nil
}

@艾瑞林:这个问题是关于可可触摸,而不是可可。是的,图像没有alpha值。我怎样才能使它透明?请你建议我。首先,你需要使用GIF或PNG,而不是JPEG-标准GPEG只存储24位RGB。其次,你需要使用像Photoshop这样的图像编辑工具将背景颜色更改为透明。完成后,当您显示此图像时,您应该能够看到下面的图层或视图,无论您有何透明区域。太棒了,谢谢!!