文档章节

使用原声RenderScript实现高斯模糊

march_kk
 march_kk
发布于 2017/05/03 17:51
字数 314
阅读 21
收藏 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
西安
程序员
RenderScript高斯模糊等与图片处理/计算机视觉-Android

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

shareus
05/03
0
0
Android 高斯模糊效果工具--AndroidStackBlur

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

Cangol
2016/06/24
290
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

没有更多内容

加载失败,请刷新页面

加载更多

计算卷积神经网络浮点数运算量

前言 本文主要是介绍了,给定一个卷积神经网络的配置之后,如何大概估算它的浮点数运算量。 相关代码:CalFlops,基于MXNet框架的 Scala 接口实现的一个计算MXNet网络模型运算量的demo。 正文...

Ldpe2G
今天
1
0
Sql语言与MySql数据库

1. 数据库简介 1. 数据库,就是存储数据的仓库,只能通过sql语言来访问,数据库也是一个文件系统。通常,MySQL、Oracle等数据库,也被称为关系型数据库,其保存的不仅仅只是数据,还包括数据...

江左煤郎
今天
1
0
IDEA 取消自动import .*

打开设置 > Editor > Code Style > Java > Scheme Default > Imports ① 将 Class count to use import with "*" 改为 99 (导入同一个包的类超过这个数值自动变为 * ) ② 将 Names count ......

乔老哥
今天
3
0
PostGIS学习笔记(开篇)

PostGIS事实上算是笔者开始写博客的第一篇内容。而事实上那篇博文的内容并不丰富,笔者对PostGIS的了解仍然不多,然而17年在OSGeo课程学习时对PostGIS又有了进一步了解,并逐步发现它的强大。...

胖胖雕
今天
3
0
【Centos】在nginx服务器中配置php和mysql

接上一章《【Centos】利用Vultr服务器和namesilo布网》(https://my.oschina.net/u/3776619/blog/2051986),在Centos中配置好nginx,并在iptables中开启了80端口,和为了远程mysql操作方便开...

yongh701
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部