在iOS開發(fā)當中鸡捐,我們有很多選擇可以做半透明模糊效果,下面就是一些常見的方式或者說工具卢厂。
1. Core Image
Core Image是蘋果自己的圖像處理庫爱葵,它的API被放在CoreImage.framework庫中。
Core Image提供了大量的濾鏡(Filter)纸俭,在iOS上有90多種Filter. Core Image在創(chuàng)建Filter時是使用字符串的名字去創(chuàng)建的,這里有一個官方列表可以參看皇耗。
- (UIImage *)blurryImage:(UIImage *)image withBlurLevel:(CGFloat)blur {
CIImage *inputImage = [CIImage imageWithCGImage:image.CGImage];
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"
keysAndValues:kCIInputImageKey, inputImage, @"inputRadius", @(blur), nil];
CIImage *outputImage = filter.outputImage;
CIContext *context = [CIContext contextWithOptions:nil];
CGImageRef outImage = [context createCGImage:outputImage fromRect:[outputImage extent]];
UIImage *blurImage = [UIImage imageWithCGImage:outImage];
CGImageRelease(outImage);
return blurImage;
}
2. GPUImage
除了蘋果官方提供的之外,第三方也有這方面圖片處理的工具揍很。一個叫Brad Larson的老兄就搞了一套叫做GPUImage的開源庫郎楼。同樣的,里面提供了很多Filter窒悔。
同樣是做高斯模糊呜袁,代碼上比使用Core Image的情況簡單得多。
GPUImageGaussianBlurFilter * blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
blurFilter.blurRadiusInPixels = 2.0;
UIImage * image = [UIImage imageNamed:@"xxx"];
UIImage *blurredImage = [blurFilter imageByFilteringImage:image];
3. vImage
vImage也是蘋果推出的庫蛉迹,在Accelerate.framework中傅寡。
Accelerate這個framework主要是用來做數(shù)字信號處理、圖像處理相關(guān)的向量、矩陣運算的庫荐操。我們可以認為我們的圖像都是由向量或者矩陣數(shù)據(jù)構(gòu)成的芜抒,Accelerate里既然提供了高效的數(shù)學運算API,自然就能方便我們對圖像做各種各樣的處理托启。
基于vImage我們可以根據(jù)圖像的處理原理直接做模糊效果宅倒,或者使用現(xiàn)有的工具。UIImage+ImageEffects是個很好的圖像處理庫屯耸,看名字也知道是對UIImage做的分類擴展拐迁。這個工具被廣泛地使用著。
UIImageView *me = [[UIImageView alloc] initWithFrame:CGRectMake(10, 480, 614 ,381)];
[me setImage:[[UIImage imageNamed:@"me.png"] applyBlurWithRadius:5
tintColor:[UIColor colorWithWhite:1 alpha:0.2]
saturationDeltaFactor:1.8
maskImage:nil]];
[self.view addSubview:me];