Android RenderScript高斯模糊
看代码的时候,看到了其中有.rs结尾的文件,不是很明白,还有RenderScript类,看的一脸蒙蔽,不知所云,然后百度了一下,收货还真不少,这东西在图形处理这块用处挺大的。
今天先说说ScriptIntrinsicBlur,这个类不需要定义rs文件,从这个Intrinsic单词可以看的出来,它是API17以后内置的类,专门用来处理图像的,让图片变模糊。
publicstaticBitmapblurBitmap(Bitmapbitmap,floatradius,Contextcontext){
//创建渲染脚本上下文
RenderScriptrs=RenderScript.create(context);
//为位图分配内存
Allocationallocation=Allocation.createFromBitmap(rs,bitmap);
Typet=allocation.getType();
//用同样的类型创建内存,一般用这两种方式创建<spanstyle="font-family:Arial,Helvetica,sans-serif;">Allocation</span>
AllocationblurredAllocation=Allocation.createTyped(rs,t);
//创建高斯渲染脚本
ScriptIntrinsicBlurblurScript=ScriptIntrinsicBlur.create(rs,Element.U8_4(rs));
//设置模糊半径(maximum25.0)
blurScript.setRadius(radius);
//为脚本设置输入参数
blurScript.setInput(allocation);
//调用脚本结果存入<spanstyle="font-family:Arial,Helvetica,sans-serif;">blurredAllocation中</span>
blurScript.forEach(blurredAllocation);
//把脚本结果存入位图中因为为native层渲染,所以结果需要复制到上层
blurredAllocation.copyTo(bitmap);
//Destroyeverythingtofreememory
allocation.destroy();
blurredAllocation.destroy();
blurScript.destroy();
t.destroy();
returnbitmap;
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。