Как остановить масштабирование Glide?

Я использую библиотека загрузки изображений Glide и у меня возникли проблемы, когда дело доходит до изменения размера растровых изображений.

при использовании следующего кода:

Glide.with(getActivity())
    .load(images.get(i))
    .asBitmap().centerCrop()
    .into(new SimpleTarget<Bitmap>(1200, 1200) {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {

        }
    });

каждое растровое изображение изменяется до заданных размеров. Итак, если изображение 400x300, оно масштабируется до 1200 x 1200, чего я не хочу. Как сделать так, чтобы если изображение меньше указанных размеров, оно не изменяло его размер?

Я указываю размеры потому что я хочу, чтобы каждое изображение, которое больше указанных размеров, было изменено с учетом centerCrop; и затем, если изображение меньше указанных размеров, я не хочу, чтобы оно было изменено.

1 ответов


Я хочу, чтобы каждое изображение было больше указанных размеров изменение размера с учетом centerCrop; а затем, если изображение меньше, чем указанные размеры, я не хочу, чтобы он был изменен.

вы можете получить это поведение с помощью пользовательского преобразования:

public class CustomCenterCrop extends CenterCrop {

    public CustomCenterCrop(BitmapPool bitmapPool) {
        super(bitmapPool);
    }

    public CustomCenterCrop(Context context) {
        super(context);
    }

    @Override
    protected Bitmap transform(BitmapPool pool, Bitmap toTransform, int outWidth, int outHeight) {
        if (toTransform.getHeight() > outHeight || toTransform.getWidth() > outWidth) {
            return super.transform(pool, toTransform, outWidth, outHeight);
        } else {
            return toTransform;
        }
    }
}

а затем используйте его так:

Glide.with(getActivity())
    .load(images.get(i))
    .asBitmap()
    .transform(new CustomCenterCrop(getActivity()))
    .into(new SimpleTarget<Bitmap>(1200, 1200) {
        @Override
        public void onResourceReady(Bitmap resource, GlideAnimation glideAnimation) {

        }
    });