<分区>
我有一个悬停在按钮上的图标。该图标是黑色和白色,我想以编程方式“剪切”黑色区域。
如何以编程方式将图标的黑色区域转换为透明区域?
<分区>
我有一个悬停在按钮上的图标。该图标是黑色和白色,我想以编程方式“剪切”黑色区域。
如何以编程方式将图标的黑色区域转换为透明区域?
最佳答案
您可以使用 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/