//获取屏幕宽和高 DisplayMetrics outMetrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(outMetrics); int width = outMetrics.widthPixels; int height = outMetrics.heightPixels;
publicstatic Bitmap rsBlur(Context context, Bitmap source, int radius){ Bitmap inputBmp = source; //(1) //初始化一个RenderScript Context RenderScript renderScript = RenderScript.create(context); // Allocate memory for Renderscript to work with //(2) //创建输入输出的allocation final Allocation input = Allocation.createFromBitmap(renderScript,inputBmp); final Allocation output = Allocation.createTyped(renderScript,input.getType()); //(3) // Load up an instance of the specific script that we want to use. //创建ScriptIntrinsic ScriptIntrinsicBlur scriptIntrinsicBlur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript)); //(4) //填充数据 scriptIntrinsicBlur.setInput(input); //(5) // Set the blur radius //设置模糊半径 scriptIntrinsicBlur.setRadius(radius); //(6) // Start the ScriptIntrinisicBlur //启动内核 scriptIntrinsicBlur.forEach(output); //(7) // Copy the output to the blurred bitmap //copy数据 output.copyTo(inputBmp); //(8) //销毁renderScript renderScript.destroy(); return inputBmp; }