ImageView图片模糊处理用作其他控件背景

BlurImage

imageView图片模糊处理作为父控件背景小demo
说明
本例是通过获取ImageView中的Bitmap位图后进行模糊处理再设置为其他控件的背景图。
先上效果图:

效果图
效果图

可以看到图上有采样间隔和模糊度两个seekbar。

采样间隔:做模糊处理这类的涉及到计算的操作图片大小越小速度越快是可以肯定的。而处理效果是模糊效果,因此对原图进行采样降低待处理图的清晰度来达到提高处理速度的方式是可取的。
模糊度:及对图片进行模糊计算处理而不是像采样那样仅仅是通过按长宽比来缩放图片大小。图中变化不是太明显的原因是采样设为1的时候的模糊效果,seekbar的范围我设置的0-5.将采样间隔加大的话效果会很明显,我也不推荐使用原图来模糊处理

代码
实现代码也很简单
1.获取ImageView显示的Bitmap bitmap
2.创建一个新的Bitmap overlay,这里的大小按照自己觉得理想的采样频率来设置。以达到缩小图片大小的目的
3.使用canvas将原图bitmap绘制到较小的overlay上
4.对overlay进行模糊处理
5.处理后返回的bitmap设置为目标控件的背景图

    private void initBackGround(ImageView image) {
        Bitmap bitmap = ((BitmapDrawable) image.getDrawable()).getBitmap();
        //创建一个长宽等比缩小的Bitmap
        int bitmap_width = bitmap.getWidth();
        int bitmap_hight = bitmap.getHeight();
        Bitmap overlay = Bitmap.createBitmap((int) (bitmap_width / scaleFactor), (int) (bitmap_hight / scaleFactor), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(overlay);
        //将canvas按照bitmap等量缩放,模糊处理的图片才能显示正常
        canvas.scale(1 / scaleFactor, 1 / scaleFactor);
        Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
        canvas.drawBitmap(bitmap, 0, 0, paint);
        //对采样后的bitmap进行模糊处理,缩放采样后的图片处理比原图处理要省很多时间和内存开销
        overlay = FastBlur.doBlur(overlay, (int) blur, false);
        //模糊处理后的图片设置为头部布局背景图
        mImageBackground.setBackground(new BitmapDrawable(getResources(), overlay));
    }

demo地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原创作者:AchillesL若转载文章,请在明显的位置标明文章出处 0 前言   网易云音乐是一款非常优秀的音乐播...
    AchillesL阅读 43,675评论 44 282
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,283评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,366评论 25 709
  • 本文参与#漫步青春#征文活动作者:张思思,本人承诺。文章内容为原创,且未在其他平台上发布。 ...
    思_43bc阅读 321评论 0 1
  • 我不知道自己的眼泪为什么可以这么容易就产生——可以是别人的一句无心的话戳到了我的玻璃心,可以是因为长辈把话说得凶了...
    voice_7e7e阅读 190评论 0 0