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

除此之外苹果官方提供的之外,第三方也有那地方图片处理的工具。一个叫布拉德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上落到实处半晶莹剔透模糊效果已毕的整理。

2018正版葡京赌侠诗,参考:

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

发表评论

电子邮件地址不会被公开。 必填项已用*标注