欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android RenderScript高斯模糊

程序员文章站 2024-02-29 08:41:58
看代码的时候,看到了其中有.rs结尾的文件,不是很明白,还有renderscript类,看的一脸蒙蔽,不知所云,然后百度了一下,收货还真不少,这东西在图形处理这块用处挺大的...

看代码的时候,看到了其中有.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(); 
 
    //用同样的类型创建内存,一般用这两种方式创建 <span style="font-family: arial, helvetica, sans-serif;">allocation</span> 
    allocation blurredallocation = allocation.createtyped(rs, t); 
 
    //创建高斯渲染脚本  
    scriptintrinsicblur blurscript = scriptintrinsicblur.create(rs, element.u8_4(rs)); 
    //设置模糊半径 (maximum 25.0) 
    blurscript.setradius(radius); 
    //为脚本设置输入参数  
    blurscript.setinput(allocation); 
    //调用脚本 结果存入 <span style="font-family: arial, helvetica, sans-serif;">blurredallocation中</span> 
    blurscript.foreach(blurredallocation); 
 
    //把脚本结果存入位图中 因为为native层渲染,所以结果需要复制到上层 
    blurredallocation.copyto(bitmap); 
 
    //destroy everything to free memory 
    allocation.destroy(); 
    blurredallocation.destroy(); 
    blurscript.destroy(); 
    t.destroy(); 
 
    return bitmap; 
  } 

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