第一种:
效果:
image.png
1、添加依赖:
implementation "net.qiujuer.genius:blur:2.0.0-beta4"
调用代码:
// Java
Bitmap newBitmap = StackBlur.blur(mBitmap, (int) radius, false);
// Bitmap JNI Native
Bitmap newBitmap = StackBlur.blurNatively(mBitmap, (int) radius, false);
// Pixels JNI Native
Bitmap newBitmap = StackBlur.blurNativelyPixels(mBitmap, (int) radius, false);
其中,二三种调用实现方式的速度比第一种快
第二种:
通过使用图片框架:
添加依赖:
implementation 'com.squareup.picasso:picasso:2.5.2'
新建类:
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(25);
script.forEach(output);
output.copyTo(blurredBitmap);
bitmap.recycle();
return blurredBitmap;
}
@Override
public String key() {
return "blur";
}
}
注意,这里Transformation实现的应该是picasso的Transformation,否则报错,模糊半径是:0<=radius<=25,其他的半径会闪退,模糊半径越大就越模糊,这种实现方式最小SDK版本是17。
调用代码:
Picasso.with(this)
.load(R.drawable.abc)
.config(Bitmap.Config.RGB_565)
.transform(new BlurTransformation(this))
.into(imageView);
网友评论