iOS UIImage如何以编程方式将黑色转换为透明?
我有一个图标悬停在一个按钮上。图标是黑色和白色的,我想用编程的方式“剪切”黑色区域 如何以编程方式将图标的黑色区域转换为透明区域?iOS UIImage如何以编程方式将黑色转换为透明?,ios,objective-c,colors,uiimage,transparency,Ios,Objective C,Colors,Uiimage,Transparency,我有一个图标悬停在一个按钮上。图标是黑色和白色的,我想用编程的方式“剪切”黑色区域 如何以编程方式将图标的黑色区域转换为透明区域? 您可以使用核心图像过滤器,尤其是过滤器 有关使用CIFilters的详细说明,请参阅和 编辑:此过滤器采用黑色像素并使其完全透明,并用不透明替换白色像素,用部分透明替换灰色像素,等等 -(void)setImage:(UIImage *)image_ { UIImage *entryImage = image_; CIContext *conte
您可以使用核心图像过滤器,尤其是过滤器 有关使用CIFilters的详细说明,请参阅和 编辑:此过滤器采用黑色像素并使其完全透明,并用不透明替换白色像素,用部分透明替换灰色像素,等等
-(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];
}
图像将是原始图像大小的透明正方形,完整的黑色区域应用白色遮罩。当我们将这个遮罩图像覆盖在实际的方形图像上时,输出将是预期的图像 准备好蒙版图像后,实现蒙版图像的功能 //掩蔽Thumnail图像
+(UIImage*) maskImage:(UIImage *)thumbImage withMask:(UIImage *)maskImage
{
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([thumbImage CGImage], mask);
CGImageRelease(mask);
UIImage *maskedImage = [UIImage imageWithCGImage:masked];
CGImageRelease(masked);
return maskedImage;
}
结束一个问题是多么愚蠢的理由。。。这里不允许任何人学习。