package yifeiyuan.practice.practicedemos.fastblur; import android.graphics.Bitmap; import android.os.Bundle; import android.renderscript.Allocation; import android.renderscript.Element; import android.renderscript.RenderScript; import android.renderscript.ScriptIntrinsicBlur; import android.util.Log; import android.widget.Button; import android.widget.ImageView; import butterknife.InjectView; import yifeiyuan.practice.practicedemos.R; import yifeiyuan.practice.practicedemos.base.ToolbarActivity; public class FastBlurActivity extends ToolbarActivity { @InjectView(R.id.btn_start_blur) Button mBtnStartBlur; @InjectView(R.id.iv_blur) ImageView mIvBlur; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fast_blur); // FastBlur 用的时候 有些需要copy之后才行 // Bitmap bitmap = sentBitmap.copy(Bitmap.Config.ARGB_8888, true); mBtnStartBlur.setOnClickListener(v -> { mIvBlur.buildDrawingCache(); Bitmap bitmap = FastBlur.doBlur(mIvBlur.getDrawingCache(), 20, true); mIvBlur.setImageBitmap(bitmap); }); } /** * 有些手机不支持....so 不能用 * * @param sentBitmap * @param radius */ private void RenderScriptblur(Bitmap sentBitmap, int radius) { long start = System.currentTimeMillis(); Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true); final RenderScript rs = RenderScript.create(FastBlurActivity.this); final Allocation input = Allocation.createFromBitmap(rs, sentBitmap, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); final Allocation output = Allocation.createTyped(rs, input.getType()); final ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); script.setRadius(radius /* e.g. 3.f */); script.setInput(input); script.forEach(output); output.copyTo(bitmap); mIvBlur.setImageBitmap(bitmap); long end = System.currentTimeMillis(); Log.v(TAG, "fastblur time:" + (end - start)); } }