如何通过 HTML5 实现 iOS 7 的实时css实现毛玻璃效果模糊效果

iOS开发使用半透明模糊效果方法整理
招聘信息:
虽然iOS很早就支持使用模糊效果对图片等进行处理,但尤其在iOS7以后,半透明模糊效果得到大范围广泛使用。包括今年最新发布的iOS8也沿袭了这一设计,甚至在OS X 10.10版Yosemite中也开始大量使用半透明模糊。在iOS开发当中,我们有很多选择可以做半透明模糊效果,下面就是一些常见的方式或者说工具。0. 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”,这里有一个可以参看。除了这里提到的多种Filter之外,Core Image还提供了CIDetector等类,可以支持人脸识别等,在OS X上Core Image也做了更多支持。1. GPUImage除了苹果官方提供的之外,第三方也有这方面图片处理的工具。一个叫Brad Larson的老兄就搞了一套叫做的开源库。同样的,里面提供了很多Filter。同样是做高斯模糊,用GPUImage可以这样:GPUImageGaussianBlurFilter&*&blurFilter&=&[[GPUImageGaussianBlurFilter&alloc]&init];
blurFilter.blurRadiusInPixels&=&2.0;
UIImage&*&image&=&[UIImage&imageNamed:@"xxx"];
UIImage&*blurredImage&=&[blurFilter&imageByFilteringImage:image];至少看起来,代码上比使用Core Image的情况简单得多。2. vImage其实,说完上面的Core Image和GPUImage,很多情况下就已经足够用了。下面我们再来看一个,那就是vImage。vImage也是苹果推出的库,在Accelerate.framework中。Accelerate这个framework主要是用来做数字信号处理、图像处理相关的向量、矩阵运算的库。我们可以认为我们的图像都是由向量或者矩阵数据构成的,Accelerate里既然提供了高效的数学运算API,自然就能方便我们对图像做各种各样的处理。基于vImage我们可以根据图像的处理原理直接做模糊效果,或者使用现有的工具。UIImage+ImageEffects是个很好的图像处理库,看名字也知道是对UIImage做的分类扩展。这个工具被广泛地使用着。3. 性能与选择既然已经知道了3个方法做到半透明模糊效果,那么我们要用的时候应该选择哪个呢?这是个问题。从系统版本的支持上来看,这几个都差不多,都是iOS4、iOS5就支持了的,对于身在iOS8时代的开发者,这点兼容已经够了。Core Image是苹果自己的图像处理库,本来就不错,如果苹果自身在某个版本做了优化处理,自然更好。主要是用起来比较麻烦,还要知道Filter的名字。GPUImage来自第三方,但实现开放,用起来也比较简单,在很多场景下是由于Core Image的选择。图像模糊处理是很复杂的计算,最终往往要看性能。这点上看,我更倾向选择vImage。在本人开发的iOS应用中,选择了vImage,出发点是性能,这并不是说有非常精确的benchmark。但在几个调试时的主流机型上测,包括5c、5s等,在模糊半径(blur radius)达到10左右的时候,配合动画,vImage的处理时间会明显比较短,不会“卡顿”。以上是本人对iOS上实现半透明模糊效果实现的整理。
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量4613点击量4418点击量4287点击量3892点击量3818点击量3800点击量3521点击量3507点击量3044
&2016 Chukong Technologies,Inc.
京公网安备89912被浏览56747分享邀请回答435 条评论分享收藏感谢收起webdirections.org/blog/creating-ios-7-effects-with-css3-translucency-and-transparency/最终效果如下:html 的 “毛玻璃” 可以直接用 css3 filter: 例如:-webkit-filter: blur(2px);iOS 6 以上支持:既可以应用在 img 上,也可以应用在其它 tag 上补充:在
iPod Touch 5 下,实时渲染(下图是模拟器下滚动中截图的),这个 list 非常大(看滚动条),不过性能完全没有问题。如果只是应用在一般网页上应该没有性能问题2822 条评论分享收藏感谢收起查看更多回答Pages: 1/3
涓婚? : 缁檝iew澧炲姞iOS 7涓?竴鏍风殑瀹炴椂姣涚幓鐠冩覆鏌撴晥鏋

我要回帖

更多关于 c 实现毛玻璃效果 的文章

 

随机推荐