首页 > 系统 > Android > 正文

Android项目实战之Glide 高斯模糊效果的实例代码

2019-12-12 00:09:36
字体:
来源:转载
供稿:网友

核心需要高斯模糊的库

compile 'jp.wasabeef:glide-transformations:2.0.1'

针对于3.7的版本

使用方法为:

//加载背景,      Glide.with(MusicPlayerActivity.this)          .load(service.getImageUri())          .dontAnimate()          .error(R.drawable.no_music_rotate_img)          // 设置高斯模糊,模糊程度(最大25) 缩放比例          .bitmapTransform(new BlurTransformation(this, 14, 3))          .into(allBg);

针对4.+

Glide.with(context)        .load(url)        .apply(RequestOptions.bitmapTransform(new BlurTransformation(25,8)))        .into(view);            

BlurTransformation 类源码:

import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Paint;import android.support.annotation.NonNull;import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;import java.security.MessageDigest;import jp.wasabeef.glide.transformations.internal.FastBlur;public class BlurTransformation extends BitmapTransformation {  private static final int VERSION = 1;  private static final String ID = "BlurTransformation." + VERSION;  private static int MAX_RADIUS = 25;  private static int DEFAULT_DOWN_SAMPLING = 1;  private int radius;  private int sampling;  public BlurTransformation() {    this(MAX_RADIUS, DEFAULT_DOWN_SAMPLING);  }  public BlurTransformation(int radius) {    this(radius, DEFAULT_DOWN_SAMPLING);  }  public BlurTransformation(int radius, int sampling) {    this.radius = radius;    this.sampling = sampling;  }  @Override  protected Bitmap transform(@NonNull BitmapPool pool, @NonNull Bitmap toTransform, int outWidth, int outHeight) {    int width = toTransform.getWidth();    int height = toTransform.getHeight();    int scaledWidth = width / sampling;    int scaledHeight = height / sampling;    Bitmap bitmap = pool.get(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);    Canvas canvas = new Canvas(bitmap);    canvas.scale(1 / (float) sampling, 1 / (float) sampling);    Paint paint = new Paint();    paint.setFlags(Paint.FILTER_BITMAP_FLAG);    canvas.drawBitmap(toTransform, 0, 0, paint);    bitmap = FastBlur.blur(bitmap, radius, true);    return bitmap;  }  @Override public String toString() {    return "BlurTransformation(radius=" + radius + ", sampling=" + sampling + ")";  }  @Override public boolean equals(Object o) {    return o instanceof BlurTransformation &&        ((BlurTransformation) o).radius == radius &&        ((BlurTransformation) o).sampling == sampling;  }  @Override public int hashCode() {    return ID.hashCode() + radius * 1000 + sampling * 10;  }  @Override public void updateDiskCacheKey(@NonNull MessageDigest messageDigest) {    messageDigest.update((ID + radius + sampling).getBytes(CHARSET));  }}

总结

以上所述是小编给大家介绍的Android项目实战之Glide 高斯模糊效果的实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表