Как сжать и уменьшить качество изображения с помощью Glide для Android - PullRequest
0 голосов
/ 13 сентября 2018

Я использую библиотеку Glide для загрузки изображения.В моем другом приложении я использую этот код

void imageButtonclick() {
        iv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                CropImage.activity(filePath).setGuidelines(CropImageView.Guidelines.ON)
                    .setAspectRatio(1,1).setOutputCompressQuality(50).start(UploadBook.this);

                // Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    //intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);
                    //startActivityForResult(intent, CAMERA_REQUEST_CODE);
            }
        });

, чтобы уменьшить размер изображения, объявив .setOutputCompressQuality(50) Но я не знаю, как сделать то же самое с библиотекой Glide Image.

Мой код

1008 *

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

С Glide официальный сайт :

По умолчанию Glide предпочитает RGB_565, потому что ему требуется всего два байта. на пиксель (16 бит) и, следовательно, занимает половину памяти более высокое качество и системная настройка по умолчанию ARGB_8888.

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

Опция 1 : изменение размера изображения с помощью override(x, y).

RequestOptions myOptions = new RequestOptions()
    .override(100, 100);

Glide.with(fragment)
    .asBitmap()
    .apply(myOptions)
    .load(url)
    .into(bitmapView);

Вариант 2 : масштабирование изображения с помощью centerCrop или fitCenter

centerCrop () - это метод обрезки, который масштабирует изображение так, чтобы оно заполняет запрошенные границы ImageView и затем обрезает лишние. ImageView будет заполнен полностью, но все изображение может не отображается.

RequestOptions myOptions = new RequestOptions()
    .centerCrop();

Glide.with(ctx)
    .asBitmap()
    .apply(myOptions)
    .load(url)
    .into(bitmapView);

fitCenter () - это метод обрезки, который масштабирует изображение так, чтобы оба размеры равны или меньше, чем запрошенные границы ImageView. Изображение будет отображаться полностью, но может не заполниться весь ImageView.

RequestOptions myOptions = new RequestOptions()
        .fitCenter();

    Glide.with(ctx)
        .asBitmap()
        .apply(myOptions)
        .load(url)
        .into(bitmapView);

Вариант 3 : смешать оба эти раствора

RequestOptions myOptions = new RequestOptions()
    .fitCenter() // or centerCrop
    .override(100, 100);

 Glide.with(ctx)
     .asBitmap()
     .apply(myOptions)
     .load(url)
     .into(bitmapView);
0 голосов
/ 13 сентября 2018

Попробуйте это

Glide
    .with(ctx)
    .load(url)
    .apply(new RequestOptions().override(600, 200))
    .into(imageView);
...