zoukankan      html  css  js  c++  java
  • Android 图片高级绘图效果---高斯模糊

    高斯模糊就是将指定像素变换为其与周边像素加权平均后的值,权重就是高斯分布函数计算出来的值。高斯模糊能够将图片制作成类似磨砂的图片效果,一般这些图片都用来作为背景。
    目前使用到的是RenderScript ,其特点是使用起来比较方便,虽然效率不是很高,但是也能够满足目前的使用。使用流程如下:

    1. 添加混淆配置

    -keepclasseswithmembernames class * {
        native <methods>;
    }
    -keep class android.support.v8.renderscript.** { *; }

     2.使用高斯模糊

    private void blur(Bitmap bkg, View view) {
    
            float radius = 25;
    
            Bitmap overlay = Bitmap.createBitmap((int) (view.getMeasuredWidth()), (int) (view.getMeasuredHeight()), Bitmap.Config.ARGB_8888);
    
            float scaleW = (float) view.getMeasuredWidth() / (float) bkg.getWidth();
            float scaleH = (float) view.getMeasuredHeight() / (float) bkg.getHeight();
    
            Matrix matrix = new Matrix();
            matrix.postScale(scaleW, scaleH);
            Bitmap resizeBmp = Bitmap.createBitmap(bkg, 0, 0, bkg.getWidth(), bkg.getHeight(), matrix, true);
    
            Canvas canvas = new Canvas(overlay);
    
            canvas.translate(-view.getLeft(), -view.getTop());
            canvas.drawBitmap(resizeBmp, 0, 0, null);
    
            RenderScript rs = RenderScript.create(this);
    
            Allocation overlayAlloc = Allocation.createFromBitmap(rs, overlay);
    
            ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create(rs, overlayAlloc.getElement());
    
            blur.setInput(overlayAlloc);
    
            blur.setRadius(radius);
    
            blur.forEach(overlayAlloc);
    
            overlayAlloc.copyTo(overlay);
            view.setBackground(new BitmapDrawable(getResources(), overlay));
            rs.destroy();
        } 

  • 相关阅读:
    Idea配置注释
    mysql省市区数据表
    php实现汉字转拼音的类
    git push时如果不再弹出用户和密码的输入提示框该怎么办
    .gitignore 忽略特殊文件无效
    vmware中CentOS7网络设置教程详解
    Tp5中配置多模块开发
    安装tp6 并使用多应用模式
    ldf和mdf文件怎么还原到sqlserver数据库
    git本地仓库与远程仓库建立连接。
  • 原文地址:https://www.cnblogs.com/renhui/p/9528316.html
Copyright © 2011-2022 走看看