看代码的时候,看到了其中有.rs结尾的文件,不是很明白,还有RenderScript类,看的一脸蒙蔽,不知所云,然后百度了一下,收货还真不少,这东西在图形处理这块用处挺大的。

今天先说说ScriptIntrinsicBlur,这个类不需要定义rs文件,从这个Intrinsic单词可以看的出来,它是API17以后内置的类,专门用来处理图像的,让图片变模糊。

public static Bitmap blurBitmap(Bitmap bitmap, float radius, Context context) {

//创建渲染脚本上下文

RenderScript rs = RenderScript.create(context);

//为位图分配内存

Allocation allocation = Allocation.createFromBitmap(rs, bitmap);

Type t = allocation.getType();

//用同样的类型创建内存,一般用这两种方式创建 Allocation

Allocation blurredAllocation = Allocation.createTyped(rs, t);

//创建高斯渲染脚本

ScriptIntrinsicBlur blurScript = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));

//设置模糊半径 (maximum 25.0)

blurScript.setRadius(radius);

//为脚本设置输入参数

blurScript.setInput(allocation);

//调用脚本 结果存入 blurredAllocation中

blurScript.forEach(blurredAllocation);

//把脚本结果存入位图中 因为为native层渲染,所以结果需要复制到上层

blurredAllocation.copyTo(bitmap);

//Destroy everything to free memory

allocation.destroy();

blurredAllocation.destroy();

blurScript.destroy();

t.destroy();

return bitmap;

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐