iOS UIImage如何以编程方式将黑色转换为透明?

我有一个悬停在按钮上的图标.图标为黑色和白色,我想以编程方式“剪切”黑色区域.

如何以编程方式将图标的黑色区域转换为透明?

解决方法

您可以使用核心图像过滤器 – 特别是过滤器 CIMaskToAlpha

有关使用CIFilters的详细说明,请参见Apple’s Core Image Programming GuideRayWenderlich tutorial

编辑:此滤镜采用黑色像素并使其完全透明,并将像素白色替换为不透明,灰色替换为部分透明等.

-(void)setimage:(UIImage *)image_
{

    UIImage *entryImage  = image_;
    CIContext *context = [CIContext contextWithOptions:nil];

    CIImage *image = [CIImage imageWithCGImage:[entryImage CGImage]];
    CIFilter *filter = [CIFilter filterWithName:@"CIMaskToAlpha"];
    [filter setDefaults];
    [filter setValue:image forKey:kCIInputimageKey];
    //    CIImage *result = [filter valueForKey:kCIoUtputimageKey];
    CIImage *result = [filter outputimage];

    CGImageRef cgImage = [context createCGImage:result fromrect:[result extent]];

    UIImage *newImage = [UIImage imageWithCGImage:cgImage scale:[entryImage scale] orientation:UIImageOrientationUp];
    CGImageRelease(cgImage);
    [super setimage:newImage];
}

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...