Библиотека Glide занимает слишком много времени для отображения размытых изображений - PullRequest
0 голосов
/ 17 мая 2019

Я использую библиотеку 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 Ответ

2 голосов
/ 17 мая 2019

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;   
}

Его выполнение на растровом изображении. Если размер вашего изображения больше, тогда потребуется время длявыполнить операцию на растровом изображении, -Пожалуйста, пользователь более светлое изображение -Вы можете выполнить операцию размытия самостоятельно.-Вы должны отображать загрузчик, пока ваша операция не выполняется над растровым изображением.

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

...