Изменение размера и сохранение изображений - PullRequest
0 голосов
/ 12 июня 2018

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

for (String path : this.paths) {
        Glide.with(this.context).asBitmap().load(path).apply(RequestOptions.fitCenterTransform()).into(new SimpleTarget<Bitmap>(1080, 1920) {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                try {
                    resource.compress(Bitmap.CompressFormat.JPEG, 85, new FileOutputStream(MasterFacade.getAppDir() + "temp/" + resource.hashCode() + ".jpg"));
                    listener.onUpdate(progressMessage, processed.get());

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        });
    }

Я просто хочу изменить размер (с сохранением соотношения сторон) до 1080x1920 (или ближайший), а затем сохранить новыйрастровое изображение в файл.

Я уверен, что у меня есть разрешение на запись. Я уверен, что path изображение существует. Я уверен, что MasterFacade.getAppDir() + "temp/" + resource.hashCode() + ".jpg" является допустимым каталогом, и я пишу разрешения для него.

Но этот код никогда не достигается!

Я пытался отладить и onResourceReady никогда не вызывается ...

Что я делаю не так?

Ответы [ 6 ]

0 голосов
/ 22 марта 2019

получите изображение, как @Gautam Kumar, но вы также должны изменить свой imageView в XML, добавив android: AdjustViewBounds = "true".

Glide.with(getContext()) .load(imagePath) .apply(new RequestOptions().override(600, 200)) .into(setImage);

тогда вашXML

      <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"
        android:id="@+id/image_id"
        android:src="@drawable/ic_image" />
0 голосов
/ 12 июня 2018

Измените размер изображения, используя это в Glide 4.x

Glide.with(getContext())
.load(imagePath)
.apply(new RequestOptions().override(600, 200))
.fitCenter() 
.into(setImage);
0 голосов
/ 12 июня 2018

Я полагаю, что ни один из ответов на самом деле не прочитал мою проблему:

Я пытался отладить, и onResourceReady никогда не вызывается ...

Поэтому я проверил Glide wiki ион говорит:

Вторая важная часть - это строительная линия Glide .with (context).Проблема здесь на самом деле является особенностью Glide: когда вы передаете контекст, например текущую активность приложения, Glide автоматически останавливает запрос, когда запрашивающая активность останавливается

Я вызывал этот код вышесразу после вызова finish() для действия, так что код был внутренне остановлен Glide без каких-либо исключений, и onResourceReady никогда не вызывался.

0 голосов
/ 12 июня 2018

Вы можете изменить размер изображения с помощью glide.try it ...

Glide.with(getContext()) .load(imagePath) .apply(new RequestOptions().override(600, 200)) .fitCenter() .into(setImage);

0 голосов
/ 12 июня 2018

Проблемы, по-видимому, связаны с путем, в Glide , если вы хотите загрузить изображение из внешней памяти, вы должны использовать правильный путь

Убедитесь, что путь долженбыть действительным

String path="file://"+"image path";

for (String path : this.paths) {
        Glide.with(this.context).asBitmap().load("file://"+path).apply(RequestOptions.fitCenterTransform()).into(new SimpleTarget<Bitmap>(1080, 1920) {
            @Override
            public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
                try {
                    resource.compress(Bitmap.CompressFormat.JPEG, 85, new FileOutputStream(MasterFacade.getAppDir() + "temp/" + resource.hashCode() + ".jpg"));
                    listener.onUpdate(progressMessage, processed.get());

                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                }
            }
        });
    }
0 голосов
/ 12 июня 2018

Вы можете изменить размер изображения, используя функцию override.

Вы можете получить больше от https://stackoverflow.com/a/50617561/6238866

Как:

public static void loadCircularImageGlide(String imagePath, ImageView view) {
    Glide.with(view.getContext())
            .load(imagePath)
            .asBitmap()
            .override(1080,1920) // resizes the image to these dimensions (in pixel). resize does not respect aspect ratio
            .error(R.drawable.create_timeline_placeholder)
            .fitCenter() // scaling options
            .transform(new CircularTransformation(view.getContext())) // Even you can Give image tranformation too
            .into(view);
}
...