当前位置: 首页 > 编程笔记 >

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

何烨华
2023-03-14
本文向大家介绍Android Picasso使用高斯模糊处理的示例代码,包括了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设置进去即可。

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

 类似资料:
  • 本文向大家介绍Android实现动态高斯模糊效果示例代码,包括了Android实现动态高斯模糊效果示例代码的使用技巧和注意事项,需要的朋友参考一下  写在前面 现在,越来越多的App里面使用了模糊效果,这种模糊效果称之为高斯模糊。大家都知道,在Android平台上进行模糊渲染是一个相当耗CPU也相当耗时的操作,一旦处理不好,卡顿是在所难免的。一般来说,考虑到效率,渲染一张图片最好的方法是使用Ope

  • 问题内容: 我想知道是否有某种方法可以使用jQuery(或jQuery可以修改的CSS)在div上应用高斯模糊。我已经研究了blur(),但至少使用Safari,它似乎并没有达到我想要的功能。如果可能的话,我想在效果上使用fadeIn,因此它会逐渐模糊。 谢谢你的帮助! 问题答案: 请注意,这是当DOM元素(例如文本框(输入等))失去焦点时,不应与您所谈论的那种模糊(高斯/运动模糊)混合在一起的时

  • 主要内容:示例在高斯模糊操作中,图像与高斯滤波器而不是盒式滤波器卷积。 高斯过滤器是一个低通过滤器,可以消除高频分量的减少。 可以使用类的方法在图像上执行此操作。 以下是这种方法的语法 - 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象。 dst - 表示此操作的目标(输出图像)的对象。 ksize - 表示内核大小的对象。 sigmaX - 类型变量表示方向上的高斯核标准差。 示例 以下

  • 注意: Internet Explorer和Safari不支持SVG滤镜! <defs> 和 <filter> 所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义。 <filter>标签用来定义SVG滤镜。<filter>标签使用必需的id属性来定义向图形应用哪个滤镜? SVG <feGaussianBlur> 实例 1 <feGaussianBlu

  • <defs> 和 <filter> 所有的SVG过滤器定义在一个 <defs> 元素中。<defs> 元素是definition的简写,用来包含特定元素的定义。 <filter> 元素用来定义一个SVG过滤器。<filter> 元素有一个必需的id属性用来唯一标识该过滤器。然后图形通过这个id来应用该过滤器。 SVG <feGaussianBlur> 实例代码

  • Android Studio有什么混淆工具可以使用吗?IntelliGuard插件被声明为工作室支持,但由于缺少AntSupport插件,它实际上并不工作。我无法在存储库中找到一个。有什么想法吗? 附注。Android Studio构建过程是基于Gradle的,所以我根本不希望看到Ant支持。也许是我错了。