文章目录

  • 参考
  • 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. C语言函数以及函数的使用
  2. lua学习笔记 1 android 调用Lua, Lua脚本中启动Intent
  3. 通过ant脚本,编译打包android工程
  4. android中 MediaStore提取缩略图和原始图像
  5. android:shape的使用 (android用xml文件生成图像控件)
  6. Android 图像处理资料
  7. android NDK JNI设置自己的log输出函数
  8. [原]如何在Android用FFmpeg+SDL2.0解码显示图像
  9. Android build/envsetup.sh 脚本分析(lunch函数)

随机推荐

  1. [置顶] 整理最全的Android开发工程师面试
  2. Android用canvas画哆啦A梦
  3. android多线程下载模块
  4. 切面编程的Android部署
  5. Android中Fragment的构造函数 his fragme
  6. Android(安卓)-- android activity 各种
  7. 推荐4个Android引导页控件
  8. 定制checkbox
  9. android中webservce获取soapObject数据的
  10. Android(安卓)退出整个程序代码