文档章节

使用原声RenderScript实现高斯模糊

march_kk
 march_kk
发布于 2017/05/03 17:51
字数 314
阅读 24
收藏 0
/**
 * Created by kk on 17-4-26
 */

public class RenderscriptUtils {

    private static final String TAG = "kk";

    private Context context;
    private static RenderscriptUtils instance;

    public RenderscriptUtils(Context context) {
        this.context = context;
    }

    public static RenderscriptUtils getInstance(Context context) {

        if (null == instance) {
            instance = new RenderscriptUtils(context);
            return instance;
        }
        return instance;
    }


    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    public Bitmap blur(Bitmap bitmap, float radius) {
        if (bitmap == null) {
            return null;
        }
        if (context == null) {
            return null;
        }
        Bitmap output = Bitmap.createBitmap(bitmap); // 创建输出图片
        RenderScript rs = RenderScript.create(context); // 构建一个RenderScript对象
        ScriptIntrinsicBlur gaussianBlue = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs)); // 创建高斯模糊脚本
        Allocation allIn = Allocation.createFromBitmap(rs, bitmap); // 创建用于输入的脚本类型
        Allocation allOut = Allocation.createFromBitmap(rs, output); // 创建用于输出的脚本类型
        gaussianBlue.setRadius(radius); // 设置模糊半径,范围0f<radius<=25f
        gaussianBlue.setInput(allIn); // 设置输入脚本类型
        gaussianBlue.forEach(allOut); // 执行高斯模糊算法,并将结果填入输出脚本类型中
        allOut.copyTo(output); // 将输出内存编码为Bitmap,图片大小必须注意
        rs.destroy(); // 关闭RenderScript对象,API>=23则使用rs.releaseAllContexts()
        return output;
    }


    @TargetApi(Build.VERSION_CODES.JELLY_BEAN)
    private void setImage(View v, Bitmap bitmap) {
        v.setBackground(new BitmapDrawable(context.getResources(), bitmap));
    }

    private void getBitmapFromNet(final View v, String url) {

        VolleyUtils volleyUtils = App.getInstance(context).getVolleyUtils();
        RequestQueue requestQueue = volleyUtils.getRequestQueue();

        ImageRequest imageRequest = new ImageRequest(url,
                new Response.Listener<Bitmap>() {

                    @Override
                    public void onResponse(Bitmap bitmap) {
                        Bitmap blurBitmap = blur(bitmap, 18f);
                        if (null != blurBitmap) {
                            setImage(v, blurBitmap);
                        }
                    }

                }, 500, 300, Bitmap.Config.ARGB_8888,
                new Response.ErrorListener() {

                    @Override
                    public void onErrorResponse(VolleyError e) {
                        e.printStackTrace();
                        Log.e(TAG, "onErrorResponse: " + e.getErrorInfo().getMessage());
                    }
                });

        requestQueue.add(imageRequest);

    }


    public void setImageVague(final View v, final String uri) {

        if (null == context) {
            return;
        }

        getBitmapFromNet(v, uri);

    }


}

 

© 著作权归作者所有

共有 人打赏支持
march_kk
粉丝 0
博文 18
码字总数 2847
作品 0
西安
程序员
私信 提问
Android 高斯模糊效果工具--AndroidStackBlur

说明 本项目主要方便大家在android上使用高斯模糊。 提供了三种方法实现高斯模糊:Java实现、RenderScript实现、C实现 使用者可根据实际情况选择使用 引用方式 Maven <dependency> <groupId>...

Cangol
2016/06/24
290
0
RenderScript高斯模糊等与图片处理/计算机视觉-Android

> RenderScript Google 官方RenderScript- https://developer.android.com/guide/topics/renderscript/compute RenderScript在3.0引入,而一些内置的compute kernel在JELLYBEANMR1中引入,为......

shareus
2018/05/03
0
0
Android酷炫动画效果

Android自定义View:一个精致的打钩小动画 一个精致的打钩动画。 Android 自定义水平进度条圆角进度 项目中实现进度条进度过程中显示圆角样式 ViewPager系列之 仿魅族应用的广告BannerView ...

掘金官方
2017/12/19
0
0
Android 高斯模糊效果

这个是我之前项目中的一个实现高斯模糊的方法,使用FastBlur这个工具类. FastBlur.java 2.使用RenderScript,注意版本号大于16时才能使用。这里还要使用v8的包: 使用: 这个是GitHub上的一个...

SRain215
2016/05/27
70
0
Android高级模糊技术学习

Android高级模糊技术学习 2014-04-01 13:29 佚名 blog.jobbole 字号:T | T 今天我们来更深入了解一下Android开发上的模糊技术。我读过几篇有关的文章,也在StackOverFlow上看过一些相关教程...

Jonson
2014/05/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周三乱弹 —— 孤独到都和病毒发生了感情了

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @-冰冰棒- :#今日歌曲推荐# 逃跑计划《一万次悲伤 (Live)》 《一万次悲伤 (Live)》- 逃跑计划 手机党少年们想听歌,请使劲儿戳(这里) 现在...

小小编辑
13分钟前
2
0
test

//// main.c// Test//// Created by 吕颖 on 2019/1/16.// Copyright © 2019年 carmen. All rights reserved.//#include <stdio.h>#include <stdlib.h>#include <t......

carmen-ly
今天
1
0
Android webview热门组件agentweb:4.0.2无法自适应的问题

Android webview热门组件agentweb:4.0.2无法自适应的问题 //设置自适应屏幕,两者合用mAgentWeb.getAgentWebSettings().getWebSettings().setUseWideViewPort(true); //将图片调整到适合w...

Gemini-Lin
今天
5
0
如何维护一个自己的 golang doc 服务

本文内容是如何维护一个golang 在线的doc 服务。 1 什么是godoc ? godoc 是 golang 官方提供的文档生成工具, 2 为什么要有godoc ? 我们经常遇到一个问题,就是代码和文档不一致,线上代码版...

鼎铭
今天
5
0
js中的对象创建的模式以及继承模式

对象创建模式: 工厂模式 构造函数模式 原型模式 继承模式 原型式继承 寄生式继承 构造函数 原型式和构造函数的组合式(缺点:运行两次超类类函数,积累函数的属性被挂载在原型对象上和实例对...

莫西摩西
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部