文章目录

  • 参考
  • gradle 配置
  • 使用java 代码进行图像模糊
  • 使用rs 脚本进行图像颜色反转

参考

官方文档


gradle 配置

build.gradle:

android {defaultConfig {//renderscript 兼容配置;         renderscriptTargetApi 14        renderscriptSupportModeEnabled  true}}...dependencies {    //implementation com.android.support:appcompat-v7:28.0.0' //supportimplementation 'androidx.appcompat:appcompat:1.0.2' //androidx}

混淆:

#-dontwarn android.support.v8.renderscript.**#-keep public class android.support.v8.renderscript.** { *; }-dontwarn androidx.renderscript.**-keep public class androidx.renderscript.** { *; }

使用java 代码进行图像模糊

mImageView.buildDrawingCache();Bitmap bitmap = mImageView.getDrawingCache();RenderScript rs = RenderScript.create(this);Allocation overlayAlloc = Allocation.createFromBitmap(rs, bitmap);ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement());blur.setInput(overlayAlloc);blur.setRadius(mRadius);blur.forEach(overlayAlloc);Bitmap overlay = Bitmap.createBitmap(mImageView.getWidth(),        mImageView.getHeight(), Bitmap.Config.ARGB_8888);overlayAlloc.copyTo(overlay);mImageView.setImageBitmap(overlay);mImageView.destroyDrawingCache();

Allocation 用于分配内存对象;
ScriptIntrinsicBlur 系统提供的, 图像模糊的脚本类;
blur.setRadius(mRadius); 该模糊角度的在[0, 25];

系统还提供了一些其它的脚本类,它们都是ScriptIntrinsic类的子类,ScriptIntrinsicBlur 也是。


使用rs 脚本进行图像颜色反转

src/main/rs下,创建 ".rs"结尾的脚本文件 reverse_color.rs:

#pragma version(1)#pragma rs java_package_name(com.stone.gradle1)uchar4 __attribute__((kernel)) invert(uchar4 in){  uchar4 out = in;  out.r =255- in.r;  out.g = 255-in.g;  out.b = 255-in.b;  return out;}//每个rs文件编译后都会自动生成对应的Java代码   ScriptC_reverse_color.java 类//java_package_name java 代码生成在哪个包下//__attribute__ 用于声明这个函数是个RenderScript核心函数,而不是一个可调用的函数,// 这个函数不是个普通函数,是用于并行计算的函数。我们不能显式调用,它是RenderScript内部调用的函数

接着在 java 代码使用:

mImageView.buildDrawingCache();Bitmap bitmap = mImageView.getDrawingCache();Bitmap outBitmap = Bitmap.createBitmap(mImageView.getWidth(), mImageView.getHeight(), Bitmap.Config.ARGB_8888);RenderScript rs = RenderScript.create(this);ScriptC_reverse_color script = new ScriptC_reverse_color(rs);Allocation allocIn = Allocation.createFromBitmap(rs, bitmap);Allocation allocOut = Allocation.createFromBitmap(rs, outBitmap);script.forEach_invert(allocIn, allocOut);allocOut.copyTo(outBitmap);mImageView.setImageBitmap(outBitmap);mImageView.destroyDrawingCache();

更多相关文章

  1. android 7.0 系统关闭彩信过CTA测试的方法
  2. 转-Android(安卓)UI学习 - Tab的学习和使用
  3. Android应用程序请求SurfaceFlinger服务创建Surface的过程分析
  4. Android的Camera系统结构
  5. Android(安卓)GPS架构分析
  6. android本地系统服务详解
  7. Android的init过程详解(一)
  8. Android(安卓)电池管理系统
  9. Android(安卓)启动流程

随机推荐

  1. Android(安卓)存储选项之 SQLiteDatabase
  2. 近百android程序源码贡献 的自己看的
  3. spring-android的使用
  4. android 中发送短信
  5. android实现抖动效果
  6. ANR android
  7. Android(安卓)xml资源文件中@、@android:
  8. android 常用布局公用属性
  9. android中的(singleLine)单行显示 none sta
  10. android 仿微信聊天界面,以及语音录制功能