下面通过一个例子深入了解renderScript的工作过程:
用renderScript实现图片的反色效果:
反色效果又叫底片效果,首先要知道什么是反色:
反色又叫补色,红的补色是绿色,蓝的补色是橙色,黄的补色是紫色,由这三种对比关系可引出很多对比的反色。 例如黑与白、红与绿等。 反色是与原色叠加可以变为白色的颜色,即用白色(RGB:255,255,255)去原色的颜色。比如说红色(RGB:255,0,0)的反色是绿色(0,255,255)。
那么可以推想出反色效果的计算方法,即对图片中的每一个像素颜色用255来减,然后给该像素点颜色重新赋值,得到的新图片既是取反色的目标图片。
由于图片的颜色有三个分量,即RGB,于是假设像素点为cur,那么取反色公式为:
Cur.r=255-Cur.r;
Cur.g=255-Cur.g;
Cur.b=255-Cur.b
在这个实例中,renderScript的方便之处在于为我们提供了获取每个像素点的方法。
编写rs脚本:
在app/src/main/文件夹下新建/rs文件夹,在里面新建一个.rs后缀的文件。
Rs文件基本语法与c语言类似,主要处理函数为kernel函数:
#pragma version(1)
#pragma rsjava_package_name(cn.dream.mao.magnifier)
// 存储输入的Allocation,也就是存放原始图片的地方
rs_allocation inputAllocation;