iOS开发应用半晶莹剔透模糊效果方法整理

本篇小说重如若对在iOS上做半晶莹剔透模糊效果的开销达成做整理。

即使iOS很已经支持使用模糊效果对图纸等展开处理,但进一步在iOS7从此,半透明模糊效果获得大范围广阔应用。包含2019年新星公布的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

除外苹果官方提供的之外,第三方也有那方面图片处理的工具。一个叫布拉德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. 特性与接纳

2018正版葡京赌侠诗,既然已经精晓了3个法子成功半晶莹剔透模糊效果,那么我们要用的时候应该选拔哪个吧?那是个问题。

  • 从系统版本的支撑上来看,这多少个都大约,都是iOS4、iOS5就协理了的,对于身在iOS8时代的开发者,那点同盟已经够了。
  • Core
    Image是苹果自己的图像处理库,本来就不易,假若苹果自身在某个版本做了优化处理,自然更好。紧若是用起来相比费心,还要了解Filter的名字。
  • GPUImage来自第三方,但落实开放,用起来也相比较简单,在众多情景下是由于Core
    Image的选择。
  • 图像模糊处理是很复杂的总结,最后往往要看性能。那点上看,我更倾向拔取vImage。

在自身支付的iOS应用中,选用了vImage,出发点是性质,那并不是说有越发规范的benchmark。但在几个调剂时的主流机型上测,包罗5c、5s等,在模糊半径(blur
radius)达到10左右的时候,同盟动画,vImage的处理时间会精晓比较短,不会“卡顿”。

上述是自家对iOS上完毕半透明模糊效果完毕的重整。

参考:

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

相关文章