美文网首页
一种高斯模糊实现

一种高斯模糊实现

作者: Dale_Dawson | 来源:发表于2019-01-03 15:24 被阅读0次

    之前遇到一个高斯模糊的需求,然后最后使用的其中一种,记录如下
    首先要说明,我们要使用Support Library,所以版本是有要求的:

    Android SDK Tools 版本必须大于等于22.2
    Android SDK Build-tools 版本必须大于等于18.1.0
    如果没有达到,请使用SDK Manager升级一下。

      /**
         * @param context 上下文对象
         * @param source  源图片
         * @param radius  这个是设置模糊度,取值在0 < radius <= 25,值越大越模糊
         * @return
         */
        @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
        public static Bitmap rsBlur(Context context, Bitmap source, int radius) {
            Bitmap inputBmp = source;
            RenderScript renderScript = RenderScript.create(context);
            Logger.d(TAG, "scale size:" + inputBmp.getWidth() + "*" + inputBmp.getHeight());
            // Allocate memory for Renderscript to work with
            final Allocation input = Allocation.createFromBitmap(renderScript, inputBmp);
            final Allocation output = Allocation.createTyped(renderScript, input.getType());
            // Load up an instance of the specific script that we want to use.
            ScriptIntrinsicBlur scriptIntrinsicBlur = ScriptIntrinsicBlur.create(renderScript, Element.U8_4(renderScript));
            scriptIntrinsicBlur.setInput(input);
            // Set the blur radius
            scriptIntrinsicBlur.setRadius(radius);
            // Start the ScriptIntrinisicBlur
            scriptIntrinsicBlur.forEach(output);
            // Copy the output to the blurred bitmap
            output.copyTo(inputBmp);
            renderScript.destroy();
            return inputBmp;
        }
    

    通常拿到的是一张图片的url地址,下面提供一个url转bitmap的方法

     /**
         * @param urlpath
         * @return Bitmap
         * 根据图片url获取图片对象
         */
        public static Bitmap getBitMBitmap(String urlpath) {
            Bitmap map = null;
            try {
                URL url = new URL(urlpath);
                URLConnection conn = url.openConnection();
                conn.connect();
                InputStream in;
                in = conn.getInputStream();
                map = BitmapFactory.decodeStream(in);
                // TODO Auto-generated catch block
            } catch (IOException e) {
                e.printStackTrace();
            }
            return map;
        }
    

    以上两种方法结合,即可对一张网络图片进行高斯模糊处理。

    相关文章

      网友评论

          本文标题:一种高斯模糊实现

          本文链接:https://www.haomeiwen.com/subject/fogfrqtx.html