我在build.gradle中添加了这个依赖关系来模糊我的图像视图:
dependencies {
implementation 'com.jackandphantom.android:blurimage:1.2.0'
}
以及我的主活动中的以下代码.java:
bgImage = (ImageView) findViewById(R.id.imageView);
Bitmap bitmap = BlurImage.with(getApplicationContext()).load(R.drawable.profilbackground).intensity(25).getImageBlur();
bgImage.setImageBitmap(bitmap);
问题是这种方式只是模糊到 25 半径,我希望它达到 50 或 100。那么,如何更改图像视图的半径模糊?请给我一个做到这一点的方法。
文档,它说
该库具有不同的方法,可用于保持图像模糊。
BlurImage.with(getApplicationContext()).load(R.drawable.myImage).intensity(20).Async(true).into(imageView);
或
BlurImage.with(getApplicationContext()).load(bitmap_Image).intensity(20).Async(true).into(imageView);
方法(Intesity(:- 强度( int 值(
{ 增加模糊和值限制在 0 到 25 之间 }
最大限制为 25,如果要更改该值,则需要分叉并自行解决该功能,或请求库的作者。
我会告诉你一个解决方法,
- 将图像缩小 7 倍
- 使用 25 再次运行模糊
- 将图像缩小到原始大小
使用 Glide 实现 Easy Blur
:dependencies {
implementation 'com.github.bumptech.glide:glide:3.7.0'
}
在您的活动/片段中
Glide.with(getActivity()).load(loginDetails.getUserdetail().getImage()).asBitmap().into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
profileImageView.setImageBitmap(BlurImageView.blur(resource));
}
});
模糊图像视图.java
public class BlurImageView {
private static final float BITMAP_SCALE = 0.4f;
private static final float BLUR_RADIUS = 25f;
public static Bitmap blur(Bitmap bitmap) {
Bitmap u8_4Bitmap;
if (bitmap.getConfig() == Bitmap.Config.ARGB_8888) {
u8_4Bitmap = bitmap;
} else {
u8_4Bitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);
}
int width = Math.round(u8_4Bitmap.getWidth() * BITMAP_SCALE);
int height = Math.round(u8_4Bitmap.getHeight() * BITMAP_SCALE);
Bitmap inputBitmap = Bitmap.createScaledBitmap(u8_4Bitmap, width, height, false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
RenderScript rs = RenderScript.create(UpasargaApplication.getAppContext());
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
theIntrinsic.setRadius(BLUR_RADIUS);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
return outputBitmap;
}
}
实现 'com.squareup.picasso:picasso:2.5.2'
<ImageView
android:id="@+id/iv_profilepic"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:src="@mipmap/ic_launcher"/>
Target target = new Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { imageViewBackground.setImageBitmap(BlurImage.fastblur(bitmap, 1f, BLUR_PRECENTAGE));
}
@Override
public void onBitmapFailed(Drawable errorDrawable) {
imageViewBackground.setImageResource(R.mipmap.ic_launcher);
}
@Override
public void onPrepareLoad(Drawable placeHolderDrawable) {
}
};