网上有一把分享,不过我还是打算搞一下,嘻嘻嘻。。。先上核心代码,后说明

 private Bitmap blur(Bitmap bitmap, float radius) {        Bitmap output = Bitmap.createBitmap(bitmap); // 创建输出图片        RenderScript rs = RenderScript.create(getActivity()); // 构建一个RenderScript渲染对象        ScriptIntrinsicBlur gaussianBlue = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); //        // 创建高斯模糊脚本        Allocation allIn = Allocation.createFromBitmap(rs, bitmap); // 开辟输入内存        Allocation allOut = Allocation.createFromBitmap(rs, output); // 开辟输出内存        gaussianBlue.setRadius(radius); // 设置模糊半径,(0.0f,25.0f]        gaussianBlue.setInput(allIn); // 设置输入内存        gaussianBlue.forEach(allOut); // 模糊编码,并将内存填入输出内存        allOut.copyTo(output); // 将输出内存编码为Bitmap,图片大小必须注意,可以预先将图片压缩        rs.destroy(); // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()        return output;    }
 

RenderScript渲染脚本是安卓平台进行高性能计算的框架,该类使用了大量的native方法,我现在着实看不懂,只会调用其方法。在此mark一下。这个blur类只要输入目标图片和想要模糊的程度参数就可以了。

动态实现高斯模糊如果是通过blur类动态修改模糊度的话,会设计大量的计算,结果就是效果很卡顿。

这里有一个巧妙的实现,就是将两张图片叠加在一起,底下的那张图片事先就已经实现了模糊度,然后动态修改上面的那张图片的透明度。

                                                                    
        iv=findViewById(R.id.fragment3_iv1);        iv2=findViewById(R.id.fragment_vi2);        seekBar=findViewById(R.id.fragment_seekBar);        seekBar.setMax(255);           final Bitmap res=BitmapFactory.decodeResource(getResources(),R.drawable.beatui);        iv.setImageBitmap(blur(res,25f));        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {            @Override            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {                iv2.setImageAlpha(255-progress);            }            @Override            public void onStartTrackingTouch(SeekBar seekBar) {            }            @Override            public void onStopTrackingTouch(SeekBar seekBar) {            }        });

 

然后通过seekbar动态就该图片的透明度就实现动态高斯模糊了。学习是一个过程,坚持!

更多相关文章

  1. Android(安卓)webview加载https网页时http图片无法显示
  2. Android(安卓)动态获取权限(6.0 , 7.0)
  3. android 异步加载图片总结
  4. 在android中用TimePicker和DatePicker或者TimePickerDialog和Dat
  5. Android(安卓)在代码中动态设置字体颜色需要注意的问题
  6. ImageView一例
  7. android Immutable bitmap passed to Canvas const...
  8. Android中多图片选择器PhotoPicker库的使用(仿微信)
  9. android 实现ImageView按压效果和解决背景图片拉申问题

随机推荐

  1. Android精通教程V
  2. Android引路蜂地图开发示例:概述
  3. android权限之一——uses-permission
  4. Android(安卓)Gallery 3D 特效精华
  5. Android(安卓)移动终端camera 防偷*拍设
  6. Debug Android(安卓)and Linux suspend a
  7. Android课设之校园二手交易app
  8. Android(安卓)AIDL服务学习笔记
  9. 实现简易的android 直播技术
  10. Android活动Acitivity启动模式之singleTo