Android Picasso使用高斯模糊处理的示例代码

众所周知,Picasso是一个在Android开发中经常使用到的图片加载库,常规用法一般是这样:

Picasso.with(context)
    .load(img_url)
    .config(Bitmap.Config.RGB_565)
    .into(imageView);

还有不使用缓存的用法:

Picasso.with(context)
    .load(img_url)
    .config(Bitmap.Config.RGB_565)
    .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
    .into(imageView);

等等一系列用法不一一列举,前段时间遇到一个需要使用高斯模糊的需求,起初找了一些处理的代码,但后面发现Picasso在加载图片的时候可以直接进行处理,所以去学习了一下这个用法,和其他用法一样,各种点点点,这次是transform():

Picasso.with(context)
    .load(img_url)
    .config(Bitmap.Config.RGB_565)
    .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
    .transform(new BlurTransformation(this))
    .into(imageView);

使用transform实现高斯模糊,其中关键代码为BlurTransformation的实现:

public class BlurTransformation implements Transformation {
  RenderScript rs;

  public BlurTransformation(Context context) {
    super();
    rs = RenderScript.create(context);
  }

  @Override
  public Bitmap transform(Bitmap bitmap) {
    Bitmap blurredBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

    Allocation input = Allocation.createFromBitmap(rs, blurredBitmap, Allocation.MipmapControl.MIPMAP_FULL, Allocation.USAGE_SHARED);
    Allocation output = Allocation.createTyped(rs, input.getType());

    ScriptIntrinsicBlur script = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
    script.setInput(input);

    //设置模糊半径
    script.setRadius(14);

    script.forEach(output);

    output.copyTo(blurredBitmap);

    bitmap.recycle();

    return blurredBitmap;
  }

  @Override
  public String key() {
    return "blur";
  }
}

新建好这个类后,则在Picasso使用是,作为参数给transform设置进去即可。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Android图片加载利器之Picasso基本用法

    今天开始我们来学习一下Picasso,计划包括以下几方面的内容: 图片加载利器之Picasso进阶 图片加载利器之Picasso源码解析 目前市场上比较流行的图片加载框架主要有UniversalImageLoader,Picasso,Glide,Fresco. 下面简单介绍一下这几个框架: UniversalImageLoader:这个可以说是非常非常经典的一个了,相信每个app的开发人员都使用过,只可惜作者已经停止该项目的维护了,所以不太推荐使用. Picasso:是Square公司出品的图片

  • Android的Glide库加载图片的用法及其与Picasso的对比

    Glide Glide是一个高效.开源. Android设备上的媒体管理框架,它遵循BSD.MIT以及Apache 2.0协议发布.Glide具有获取.解码和展示视频剧照.图片.动画等功能,它还有灵活的API,这些API使开发者能够将Glide应用在几乎任何网络协议栈里.创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取.大小调整和展示. Glide 3.0版本以后加入了多项重要功能,同时还支持使用Gradle以及Maven进行构建.该版本包括很多值得关

  • Android入门教程之Picasso框架

    一.简介: Picasso是Square公司开源的一个Android图形缓存库.可以实现图片下载和缓存功能. 二.Picasso的特性 Picasso是一个Android图片加载缓存框架,它具有如下特性: 1.支持任务优先级,会优先加载"优先级"较高的图片. 2.带有统计监控功能,可以统计缓存命中率,实时监控已使用的内存等等. 3.能够根据当前网络状态自动调整并发线程数. 4.支持图片的延迟加载. 5.本身不具有本地缓存,而是使用的OkHttp实现. Picasso除了使用上比较简单.

  • Android图片加载利器之Picasso扩展功能

    这篇文章中我们来继续学习Picasso中还提供了哪些扩展功能,一个好的框架一定是扩展性强的,你需要的我刚好有. 下面看一下都提供了哪些扩展功能呢? Picasso内部采用了建造者模式,所以我们只看Builder内部类都提供了哪些方法即可 1 defaultBitmapConfig(Bitmap.Config bitmapConfig) 设置像素格式,Picasso的默认格式为ARGB_8888,我们知道采用这个值一个像素占用4个字节,可以使用RGB_565来替换,这样可以节省一半的内存开销,当然

  • Android图片加载利器之Picasso源码解析

    看到了这里,相信大家对Picasso的使用已经比较熟悉了,本篇博客中将从基本的用法着手,逐步的深入了解其设计原理. Picasso的代码量在众多的开源框架中算得上非常少的一个了,一共只有35个class文件,但是麻雀虽小,五脏俱全.好了下面跟随我的脚步,出发了. 基本用法 Picasso.with(this).load(imageUrl).into(imageView); with(this)方法 public static Picasso with(Context context) { if

  • Android Picasso使用高斯模糊处理的示例代码

    众所周知,Picasso是一个在Android开发中经常使用到的图片加载库,常规用法一般是这样: Picasso.with(context) .load(img_url) .config(Bitmap.Config.RGB_565) .into(imageView); 还有不使用缓存的用法: Picasso.with(context) .load(img_url) .config(Bitmap.Config.RGB_565) .memoryPolicy(MemoryPolicy.NO_CACHE

  • Android实现用文字生成图片的示例代码

    本文介绍了Android实现用文字生成图片的示例代码,分享给大家,具体如下: 效果图 我们先来看看效果图,可以看到下图由各种颜色的"美"字拼接而成,形成了一张不一样的图片. 原理 生成这种图片的原理很简单,但是当时看开源项目时愣是看不懂,因为没学过Python,但是仔细研究,终于能慢慢的理解该开源项目源码,并把它改写成Android平台的源代码.下面把这个算法的主要内容讲给大家,该算法大致原理如下: 1.根据原图片的大小和字体的大小创建一张空白图片 2.把原图片按字体的大小分成若干块,

  • Android自定义滑动验证条的示例代码

    本文介绍了Android自定义滑动验证条的示例代码,分享给大家,具体如下: *注:不知道为什么,h5的标签在这里没用了,所以我也只能用Markdown的语法来写了 项目地址:https://github.com/994866755/handsomeYe.seekbar.github.io 需求: 在我们的某些应用中需要滑动验证.比如说这个样子的: 刚开始我也很懵逼要怎么去弄,结果我去看了一些人的代码,有人是用自定义viewgroup去做,就是viewgroup包含滑动块和滑动条.但我觉得太麻烦,

  • Android 给图片加上水印的示例代码(支持logo+文字)

    本文介绍了Android 给图片加上水印的示例代码(支持logo+文字),分享给大家,具体如下: 现在我们想要往图片上打上水印,该水印应符合这样的需求的: 支持logo+文字: 文字信息支持多行展示: 用户可以选择水印在图片上的生成位置(左上.右上.右下和左下). 粗略的结构图低配版大概就长这样... 水印结构图.png 现在提供这样的一种思路去实现这一个需求,我们可以通过自定义一个view,view的布局中包含logo.公司名称和相关信息,这个view就是我们要打上图片的水印. 这样的一个vi

  • Android TextView实现词组高亮的示例代码

    本文介绍了Android TextView实现词组高亮的示例代码,分享给大家,具体如下: HighlightTextView Android文本高亮控件,基于View实现. 特点 文本高亮 单词自动换行 高亮词组保持在同一行显示 效果如下: 主要逻辑: 两个 Paint 负责绘制不同的文字 在每次绘制之前计算将要绘制的文本是否会超出屏幕宽度,如果超出则换行 protected void onDraw(Canvas canvas) { super.onDraw(canvas); float x_d

  • Android自定义控件之翻转按钮的示例代码

    本文介绍了Android自定义控件之翻转按钮的示例代码,分享给大家,具体如下: 先看一下效果 一.先定义控件的基本结构 这里我们定义一个容器,所以是在ViewGroup的基础上扩展. 简单起见,直接使用扩展自ViewGroup的LinearLayout,并将我们的控件扩展自LinearLayout. 1.按钮的基本布局如下 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andr

  • Android视频悬浮窗口实现的示例代码

    前言 本文例子实现了点击显示悬浮窗口,同时窗口可播放视频,拖动位置,点击关闭及返回 APP 页面,通过例子来讲述悬浮窗口实现原理及细节处理,效果图如下所示: 悬浮窗口.gif 原理 WindowManager 对 View 视图进行添加.移除.更新处理: WindowManager.LayoutParams 对窗口参数进行一系列设置. 实现 首先,需要添加相对应悬浮窗权限: <uses-permission android:name="android.permission.SYSTEM_A

  • Android实现强制下线功能的示例代码

    一.回顾 上次连载写了两个类,一个类ActivityCollector.java用于管理所有的活动:一个类是BaseActivity.java作为所有活动的父类: 还有一个放在layout目录中的登录界面login.xml 二.登录页面的活动 接下来写一个登录页面的活动,继承自BaseActivity.java package com.example.broadcastbestpractice; import android.content.Intent; import android.os.B

  • Android输入框实时模糊搜索效果的示例代码

    Android输入框实时模糊搜索 很多开发场景会用到搜索框实时模糊搜索来帮助用户输入内容,如图 思路是在EditText 字符变动的时候 弹出ListPopupwindow并更新列表,这样的做法google已经封装为AutoCompleteTextView 用法 mAutoCompleteTextView.setAdapter(adapter); mAutoCompleteTextView.setFocusable(true); mAutoCompleteTextView.setOnItemCl

  • Android未读消息拖动气泡示例代码详解(附源码)

    前言 拖动清除未读消息可以说在很多应用中都很常见,也被用户广泛接受.本文是一个可以供参考的Demo,希望能有帮助. 提示:以下是本篇文章正文内容,下面案例可供参考 最终效果图及思路 实现关键: 气泡中间的两条边,分别是以ab,cd为数据点,G为控制点的贝塞尔曲线. 步骤: 绘制圆背景以及文本:连接情况绘制贝塞尔曲线:另外端点绘制一个圆 关键代码 1.定义,初始化等 状态:静止.连接.分离.消失 在onSizeChanged中初始化状态,固定气泡以及可动气泡的圆心 代码如下(示例): @Overr

随机推荐