Можно ли отключить / настроить автоматическое изменение размеров на больших изображениях (> 2048 пикселей)? - PullRequest
0 голосов
/ 13 декабря 2018

На изображениях с размером> 2048 пикселей Fresco автоматически применяет изменение размера :

Android не может отображать изображения длиной более 2048 пикселей в любом измерении.Это за пределами возможностей системы рендеринга OpenGL.Fresco изменит размер вашего изображения, если он превысит этот предел.

Я понимаю, что это делается в качестве обходного пути для ограничения OpenGL Android , но есть ли способ его контролировать?

Вот пример того, как Fresco рендерит изображение 750x2440 с настройками по умолчанию: enter image description here

А вот то же изображение на Picasso с настройками по умолчанию: enter image description here

Я уже пытался безрезультатно поиграть с изменением размера / уменьшением частоты на фреске.

Суть кода, использованного на изображениях выше

PS: Вот URL-адрес изображения, использованного в моем тестировании

1 Ответ

0 голосов
/ 29 декабря 2018

Я могу добиться этого, используя только isResizeAndRotateEnabledForNetwork () из класса ImagePipelineConfig , мне не нужно настраивать понижающую дискретизацию.

Требуется добавитьдополнительный шаг при инициализации Fresco (в классе приложения); настройка конвейера изображения.

Вот так выглядит класс MyApplication:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        ImagePipelineConfig pipelineConfig = ImagePipelineConfig.newBuilder(this)
                .setResizeAndRotateEnabledForNetwork(false)
                .build();
        Fresco.initialize(this, pipelineConfig);
    }
}

Поэтому вместо инициализации Fresco с помощью Fresco.initialize(this) добавьте класс ImagePipelineнастройте его так, чтобы отключить изменение размера изображений из сети с помощью .setResizeAndRotateEnabledForNetwork(false), а затем передать настроенный класс конвейера на Fresco.

Если для него установлено значение false:

resize_is_false

И затем, когда он установлен в значение true (наиболее вероятно, значение по умолчанию):

resize_is_true

...