文档章节

使用原声RenderScript实现高斯模糊

march_kk
 march_kk
发布于 2017/05/03 17:51
字数 314
阅读 17
收藏 0
点赞 0
评论 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
博文 16
码字总数 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

Android 高斯模糊效果工具--AndroidStackBlur

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

Cangol ⋅ 2016/06/24 ⋅ 0

Android酷炫动画效果

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

掘金官方 ⋅ 2017/12/19 ⋅ 0

Android 高斯模糊效果

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

SRain215 ⋅ 2016/05/27 ⋅ 0

Android高级模糊技术学习

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

Jonson ⋅ 2014/05/15 ⋅ 0

[Android] 图片JNI(C++\Java)高斯模糊 多线程

======================================================== 作者:qiujuer 博客:http://my.oschina.net/u/1377710/blog 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:h......

Qiujuer ⋅ 2014/12/06 ⋅ 1

[Android] 图片JNI(C++\Java)高斯模糊 多线程

======================================================== 作者:qiujuer 博客:blog.csdn.net/qiujuer 网站:www.qiujuer.net 开源库:Genius-Android 转载请注明出处:http://blog.csdn.......

Qiujuer ⋅ 2014/12/06 ⋅ 8

安卓开发框架(MVP+主流框架+基类+工具类)--- 工具类

《安卓开发框架》系列文章 >>> 前言 几乎每个项目都会有各种各样的工具类,在开发中通过它们可更直接方便地实现功能。下面将介绍demo中各个工具类的使用,而具体的实现请下载demo查看代码。 ...

JYcoder ⋅ 2017/10/27 ⋅ 0

图片处理工具

Android7.0 完美适配——FileProvider 拍照裁剪全解析 适配 android7.0 中的拍照相册裁剪功能 使用 photoView 实现可点击放大到全屏显示的控件,效果类似于微信朋友圈点开看大图 使用 photoV...

掘金官方 ⋅ 2017/12/11 ⋅ 0

Android 图片模糊--ImageBlurring

ImageBlurring Android 中通过 Java 与 JNI 分别进行图片模糊;并且进行比较其运算速度。 相关文章 csdn oschina 备注消息 已集成到新项目:Genius-Android Screenshots RenderScript Fast ...

Qiujuer ⋅ 2014/04/22 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

解决httpclient超时设置不生效的问题

最近公司有项目需要通过http调用第三方服务,且第三方服务偶有超时,故需要设置一定的超时时间防止不响应的情况出现。 初始设置如下: [java] view plain copy //超时设置 RequestConfig re...

Mr_Tea伯奕 ⋅ 9分钟前 ⋅ 0

过滤器Filter和拦截器HandlerInterceptor

过滤器 依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要...

hutaishi ⋅ 14分钟前 ⋅ 0

Redis入门详解(转)

Redis入门详解 Redis简介 Redis安装 Redis配置 Redis数据类型 Redis功能 持久化 主从复制 事务支持 发布订阅 管道 虚拟内存 Redis性能 Redis部署 Redis应用场景 Redis总结 Redis简介: Redi...

xiaoyaoyoufang ⋅ 26分钟前 ⋅ 0

说说javascript中的那些专业名词

DOM(Document Object Model) 文档对象模型 BOM(Browser Object Model) 浏览器对象模型 ECMA(European Computer Manufacturer's Association) 欧洲计算机制造商协会 W3C(World Wide Web Conso......

hang1989 ⋅ 46分钟前 ⋅ 0

Bootstrap Wizard 多步表单控件

废话 有一块需求是 有多步表单 点击下一步时触发验证一个范围内的表单,点击上一步或取消,清空表单并返回第一步,点击最后一步提交整个表单的 就找到了这个插件,本来自己写了一个原生的 fo...

无极之岚 ⋅ 今天 ⋅ 0

如何利用Spring Cloud构建起自我修复型分布式系统

利用Netflix所打造的组件及各类大家熟知的工具,我们完全可以顺利应对由微服务以及分布式计算所带来的技术挑战。 在过去一年当中,微服务已经成为软件架构领域一个炙手可热的新名词,而且我们...

harries ⋅ 今天 ⋅ 0

临近实习前的感想

再过两星期就要开始新的一段实习了,想想去年的这个时候也在实习,心中不免思绪万千,也一直想写对2017做个总结,但一直迟迟没有下笔。 2017年的春节,我就开始准备开学后找份实习。那时候就...

无精疯 ⋅ 今天 ⋅ 0

Spring AOP(面向切面编程)

Spring AOP概念: Spring AOP 可以劫持一个执行的方法,在方法执行之前或之后添加额外的功能。通常情况下,AOP把项目中需要在多处用到的功能,比如日志、安全和事物等集中到一个类中处理,而...

霍淇滨 ⋅ 今天 ⋅ 0

人工智能、机器学习、数据挖掘以及数据分析有什么联系?

人工智能是目前炙手可热的一个领域,所有的互联网公司以及各路大迦们纷纷表态人工智能将是下一个时代的革命性技术,可与互联网、移动互联网时代的变更相媲美;AlphaGo在围棋领域战胜人类最顶...

董黎明 ⋅ 今天 ⋅ 0

使用 vue-cli 搭建项目

vue-cli 是一个官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目,GitHub地址是:https://github.com/vuejs/vue-cli 一、 安装 node.js 首先需要安装node环境,可以直接到中...

初学者的优化 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部