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

标签 ios objective-c colors uiimage transparency

<分区>

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

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

enter image description here

最佳答案

您可以使用 Core Image Filters - 特别是过滤器 CIMaskToAlpha

有关使用 CIFilters 的详细说明,请访问 Apple's Core Image Programming Guide和一个 RayWenderlich 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];
}

关于iOS UIImage 如何以编程方式将黑色转换为透明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20963046/

相关文章:

ios - 测试应用内购买(IAP)-需要帮助来清除交易队列

iphone - 增强现实护目镜 iPhone

iphone - 横向模式下 Cocos 2d 和 CGPoint 混淆

ios - 使用 UISegmentedControl 改变 Table View 的数据

vb.net - RichTextBox - 删除最后一个字符而不删除格式

Java改变形状的颜色

ios - 如何在调用 dealloc 后停止运行该 block ? IOS

ios - 将选择器 View 设置为加载时的值

objective-c - 如何在 .h 文件中写入具有多个参数的方法的名称

java - 如何更改 writer.println 的颜色