Android用简洁的方法对图片进行高斯模糊

来源:互联网 发布:xbox360 java模拟器 编辑:程序博客网 时间:2024/06/06 19:02
import android.support.v8.renderscript.Allocation;import android.support.v8.renderscript.RenderScript;import android.support.v8.renderscript.ScriptIntrinsicBlur; @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,                             Bundle savedInstanceState) {  mRenderScript = RenderScript.create(getContext());        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_weather);        bitmap = blur(bitmap);        mImageWeather.setImageBitmap(bitmap);        }
  // 对图片进行高斯模糊    public Bitmap blur(Bitmap bmp) {        Bitmap ret = null;        if (bmp != null) {            // 1. 先用创建一个包含RenderScript的的图片            Allocation aIn = Allocation.createFromBitmap(mRenderScript, bmp);            // 2.            ScriptIntrinsicBlur blur =                    ScriptIntrinsicBlur.create(mRenderScript, aIn.getElement());            // 3.            blur.setInput(aIn);            blur.setRadius(1);  // {0, 25} , 越大越模糊            // 4.            Allocation aOut =                    Allocation.createTyped(mRenderScript, aIn.getType());            blur.forEach(aOut);            // 5.            ret = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), Bitmap.Config.ARGB_8888);            aOut.copyTo(ret);            aOut.destroy();            aOut = null;            aIn.destroy();            aIn = null;        }        return ret;    }

我们还需要在 app的gradle中添加:

 renderscriptSupportModeEnabled true renderscriptTargetApi 8
0 0