Android实现高斯模糊

心血来潮再来一篇博客,和大家分享一下高斯模糊技巧
核心代码如下:

/**
     * bitmap  对象进行模糊处理
     * @param sentBitmap 原图bitmap
     * @param context 上下文
     * @param radius 模糊系数
     * @return
     */
    @SuppressLint("NewApi") 
    public Bitmap handleBit(Bitmap sentBitmap,Context context,int radius){
        if (VERSION.SDK_INT > 16) {
            Bitmap bitmap = sentBitmap.copy(sentBitmap.getConfig(), true);

            final RenderScript rs = RenderScript.create(context);
            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);
            script.setInput(input);
            script.forEach(output);
            output.copyTo(bitmap);
            return bitmap;
        } else {
            return sentBitmap;
        }
    }

以上是把bitmap进行高斯模糊地方法,这是Android自带的高斯模糊处理方法,代码非常的简单,并且处理的效果非常匀称。
首先我们需要对屏幕进行截图获取bitmap对象,然后模糊处理bitmap,设置为背景就完成了简单地高斯模糊,但是这种方式有一个缺点,就是效率比较低,但这也是致命的缺点。如果大家想要详细了解,可以评论我给大家上传个demo

你可能感兴趣的:(Android)