滑行库花费的时间太长,无法显示模糊图像

时间:2019-05-17 09:05:49

标签: android picasso android-glide blur

我正在使用Glide库显示具有模糊变换的图像,但是显示时间太长。显示模糊图像大约需要6-8秒。 我要显示的图像已本地保存。

没有模糊的图像几乎立即加载。
这是我正在使用的代码:

Glide.with(getActivity())
    .load(img)
    .transition(DrawableTransitionOptions.withCrossFade())
    .transform(new BlurTransformation(), new CenterCrop())
    .placeholder(R.drawable.back)
    .error(R.drawable.back)
    .into(layout);

我还尝试过像以下那样将参数传递给BlurTransformation(),但是没有任何作用。

new BlurTransformation(context)
new BlurTransformation(25)
new BlurTransformation(25, 5)

这是我在build.gradle中与Glide相关的内容:

implementation 'com.github.bumptech.glide:glide:4.9.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
implementation 'jp.wasabeef:glide-transformations:4.0.0'

我以前使用过Picasso库,并且可以很好地进行模糊变换,但是Glide花费的时间太长了。

1 个答案:

答案 0 :(得分:2)

GLIDE 嘿, 如果您看到了滑行模糊转换代码的文档,

@Override   
protected Bitmap transform(@NonNull Context context, @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;   
}

它在位图上执行操作,如果您的图像尺寸较大,则将需要一些时间在位图上执行操作,-请使用较亮的图像-您可以自行执行模糊操作。 -您需要显示加载程序,直到未通过位图执行操作为止。

================================================ =======================