Glide框架高斯模糊图片处理

要素: Glide; TransformationRenderScriptScriptIntrinsicBlur;

对于不需要看废话的请直接Show me the code

对于模糊处理,一般的解决方案有四种:

  1. Java实现的算法处理;
  2. NDK实现的算法处理;
  3. RenderScript处理;
  4. openGL处理;

这四种方案的性能考虑的话,一般来讲应该是: 1 < 3 < 2  < 4 (2、3的性能非常接近),不过当属RenderScript方式最为简便(很显然嘛,平台无关性)。

RenderScript是Android自SDK17提供的一套平台无关计算密集脚本,它使用C99语法脚本,可以实现高性能的计算,而其包含大量内联函数,其中就包括了我们今天用到的:ScriptIntrinsicBlur,这是一个高斯模糊处理内联函数,一般系统用来进行阴影的计算处理。

上面有提到RenderScript是自SDK17引入的,但是Android 团队为我们提供了RenderScript support library,而起在Gradle-base的项目中的引入也极其简单,仅需要在module build.gradle设置以下11、12两行即可:

接下来简单说说 ScriptIntrinsicBlur,使用它虽然很方便,但是也是有弊端的,模糊radius不能超过25.0f,不过我们可以通过缩小原图抽样的方式变相的进行扩大半径。

Glide是一个优秀的图片加载缓存处理等一系列功能的框架,它优雅而且使用渐变,扩展也很容易,Glide就提供了自定义Transformation的方式进行扩展图片的处理

到了这里就是通过自定义Transformation的方式,详细的这里就不赘述了,感兴趣可以查看Glide官方文档:Transformation。需要特别提到的是,每个Transformation都有一个String getId()的回调,该ID用于在对处理后的图片进行缓存时的文件命名,这样当下次相同图片使用相同Transformation时,则无需任何实际处理,直接读取缓存文件,所以我们实现时的ID需要同时关联所有的调整参数,参数改变的ID也应该相应改变。下面就是我自定义的BlurTransformation

使用起来也是非常简单:

 

Gist: https://gist.github.com/ligboy/eee784aa57f40a615179

“Glide框架高斯模糊图片处理”的2个回复

  1. Nouman Raja, 41, was fired from the Palm Beach Gardens Police Department shortly after he killed Corey Jones, 31, while on plainclothes duty, and was convicted last month by a jury of manslaughter and first-degree murder.

发表评论

电子邮件地址不会被公开。