一种高斯模糊实现

之前遇到一个高斯模糊的需求,然后最后使用的其中一种,记录如下
首先要说明,我们要使用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;
    }

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

你可能感兴趣的:(一种高斯模糊实现)