【发布时间】:2014-05-10 09:04:12
【问题描述】:
我有以下代码模糊了我的 UIImage。在UIImage上加了模糊后,我还想在UIImage上加一个不透明度75%的黑屏,然后将这两种效果(模糊和黑屏)合并到一个UIImage中。
提前谢谢你!
CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
[gaussianBlurFilter setDefaults];
[gaussianBlurFilter setValue:[CIImage imageWithCGImage:[bgPicture CGImage]] forKey:kCIInputImageKey];
[gaussianBlurFilter setValue:@0.7 forKey:kCIInputRadiusKey];
CIImage *outputImage = [gaussianBlurFilter outputImage];
CIContext *context = [CIContext contextWithOptions:nil];
CGRect rect = [outputImage extent];
rect.origin.x += (rect.size.width - bgPicture.size.width ) / 2;
rect.origin.y += (rect.size.height - bgPicture.size.height) / 2;
rect.size = bgPicture.size;
CGImageRef cgimg = [context createCGImage:outputImage fromRect:rect];
UIImage *image = [UIImage imageWithCGImage:cgimg];
CGImageRelease(cgimg);
_profilePhotos[username] = image;
试过这个(不知道我在 UIColor 中插入了哪个值):
CIImage* filterInputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter* filter = [CIFilter filterWithName:@"CIConstantColorGenerator"];
[filter setValue:[UIColor colorWithRed:0/255.0 green:0/255.0 blue:0/255.0 alpha:.75] forKey:kCIInputColorKey];
[filter setValue:filterInputImage forKey:kCIInputImageKey];
CIImage* filterOutputImage = filter.outputImage;
CIContext* ctx = [CIContext contextWithOptions:nil];
CGImageRef createdImage = [ctx createCGImage:filterOutputImage fromRect:filterOutputImage.extent];
UIImage* outputImages = [UIImage imageWithCGImage:createdImage];
_profilePhotos[username] = outputImages;
【问题讨论】:
-
您遇到了哪些问题?你知道如何组合过滤器吗?
-
哦,抱歉,还有一个问题:这里的“组合”是什么意思?
-
嗨,抱歉,我只是不知道如何使用 CIFilter 在 UIImage *image 上添加 75% 不透明度的黑屏。
-
结合我的意思是最后有一个 UIImage,我可以说加载到 UIImageView 中。
-
CIConstantColorGenerator 将为您提供 75% 不透明度的黑屏。然后使用 CICategoryCompositeOperation 将其与原始图像混合。