iOS开发使半透明模糊效果方法整理

本篇文章要是对在iOS上开半晶莹剔透模糊效果的开发实现做整理。

虽说iOS很已经支持使用模糊效果指向图纸等进行拍卖,但越来越当iOS7后,半晶莹剔透模糊效果得到好范围广泛使用。包括今年风行发布之iOS8啊传了当时同一规划,甚至当OS
X 10.10版Yosemite中也初步大量采取半透明模糊。

在iOS开发中,我们发出广大选得开半晶莹剔透模糊效果,下面就是是局部广大的点子或说工具。

1. Core Image

作为规划和体会者的企业主,苹果好对图片效果及图纸处理的支撑一定是杀好的,在iOS平台上,5.0以后就涌出了Core
Image的API。Core Image的API被在CoreImage.framework库中。

在iOS和OS X平台上,Core Image都提供了汪洋底滤镜(Filter),这也是Core
Image库中比基本的物有。按照法定文档记载,在OS
X上发出120大抵栽Filter,而以iOS上啊起90基本上。

下面是千篇一律段Core Image做模糊的言传身教代码:

 CIContext *context = [CIContext contextWithOptions:nil];
 CIImage *image = [CIImage imageWithContentsOfURL:imageURL];
 CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
 [filter setValue:image forKey:kCIInputImageKey];
 [filter setValue:@2.0f forKey: @"inputRadius"];
 CIImage *result = [filter valueForKey:kCIOutputImageKey];
 CGImageRef outImage = [context createCGImage: result fromRect:[result extent]];
 UIImage * blurImage = [UIImage imageWithCGImage:outImage];

此地可以看到,Core
Image为了举行得比灵敏,Filter都是比照字符串的名去创造的,比如高斯歪曲滤镜就是“CIGaussianBlur”,这里发生一个列表可以参照:
https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CoreImageFilterReference/index.html\#//apple\_ref/doc/filter/ci/CIGaussianBlur

除开这里提到的强Filter之外,Core
Image还提供了CIDetector等看似,可以支撑人脸识别等,在OS X上Core
Image也开了重复多支持。

2. GPUImage

除去苹果官方提供的外界,第三着为产生应声点图片处理的工具。一个受Brad
Larson的兄长就行了同一法叫做GPUImage的开源库。同样的,里面提供了很多Filter。

https://github.com/BradLarson/GPUImage

无异于是举行高斯模糊,用GPUImage可以这么:

 GPUImageGaussianBlurFilter * blurFilter = [[GPUImageGaussianBlurFilter alloc] init];
 blurFilter.blurRadiusInPixels = 2.0;
 UIImage * image = [UIImage imageNamed:@"xxx"];
 UIImage *blurredImage = [blurFilter imageByFilteringImage:image];

足足看起,代码上比使用Core Image的情况大概得差不多。

3. vImage

实际,说了上面的Core
Image和GPUImage,很多状况下虽既够用了。下面我们再次来拘禁一个,那就算是vImage。vImage也是苹果推出的仓库,在Accelerate.framework中。

Accelerate这个framework主要是故来开数字信号处理、图像处理相关的朝向量、矩阵运算的堆栈。我们可认为我们的图像都是由向量或者矩阵数据整合的,Accelerate里既是提供了便捷的数学运算API,自然就可知造福我们对图像做各种各样的拍卖。

据悉vImage我们得因图像的拍卖原理直接开模糊效果,或者下现有的家伙。UIImage+ImageEffects是独十分好的图像处理库,看名字吧知道凡是针对性UIImage做的分类扩展。这个家伙给广大地动用正在。

4. 性和择

既然都亮了3只措施成功半晶莹剔透模糊效果,那么我们而为此之时段该选哪位也?这是单问题。

  • 由系统版本的支持及来拘禁,这几个还多,都是iOS4、iOS5尽管支持了底,对于身于iOS8时代的开发者,这点配合已经足足了。
  • Core
    Image是苹果好之图像处理库,本来就是正确,如果苹果自身以有版本做了优化处理,自然又好。主要是故起比较辛苦,还要亮Filter的讳。
  • GPUImage来自第三着,但贯彻开放,用起吧比较简单,在过剩状况下是由于Core
    Image的选取。
  • 图像模糊处理是怪复杂的盘算,最终往往要扣性。这点上看,我还倾向选择vImage。

当自己支付的iOS应用被,选择了vImage,出发点是性,这并无是说发生深准确的benchmark。但于几个调剂时的主流机型上测,包括5c、5s等,在模糊半径(blur
radius)达到10横之当儿,配合动画,vImage的处理时会显著较短缺,不见面“卡顿”。

如上是自家对iOS上落实半透明模糊效果落实之整治。

参考:

  • http://boboshone.com/blog/2013/04/22/blur-effect-in-ios/
  • http://nshipster.com/gpuimage/
  • http://blog.denivip.ru/index.php/2013/01/blur-effect-in-ios-applications/?lang=en
  • http://code.tutsplus.com/tutorials/adding-blur-effects-on-ios–cms-21488

转载自:http://www.molotang.com/articles/1921.html