Android: как повернуть изображение с помощью Fresco

Я использую Fresco для загрузки изображений из памяти телефона по uri в SimpleDraweeView (как внутренний, так и внешний, используя поставщика контента — «content://»). Они загружаются нормально, но продолжают вращаться, если в их свойствах установлена ​​ориентация. Я попытался установить imageRequest со свойством .setAutoRotateEnabled(true), но по какой-то причине у меня это не работает. Любые предложения о том, как повернуть изображения, чтобы отобразить их правильно?

imageView.setController(
            controllerBuilder
                    .setOldController(imageView.getController())
                    .setImageRequest(imageRequestBuilder
                            .setSource(uri)
                            .setAutoRotateEnabled(true)
                            .setResizeOptions(null)
                            .build())
                    .build());

person aleien    schedule 29.12.2015    source источник


Ответы (4)


Я решил эту проблему, установив .setDownsampleEnabled(false). Я не знаю почему, но я предполагаю, что даунсэмплинг ДЕЙСТВИТЕЛЬНО экспериментальный и предотвращает автоповорот.

person aleien    schedule 04.01.2016
comment
Да, у меня такая же проблема~ - person Tom_Love_Jerry; 18.03.2016
comment
Я открыл вопрос об этой проблеме на github Fresco, и они сказали, что когда-нибудь это исправят (: Надеюсь, отключение понижения частоты дискретизации помогло вам. - person aleien; 18.03.2016

По умолчанию используется автоповорот, поэтому изображение будет поворачиваться, если задана ориентация. Попробуйте установить значение false, если это не то, что вам нужно.

person tyronen    schedule 04.01.2016

У меня также была такая же проблема, когда включение понижения разрешения в Fresco не позволяло отключить автоповорот изображений с данными EXIF.

Недавно я открыл вопрос об этом и о том, что авто- вращение включено по умолчанию, но это нигде не задокументировано, что заставило меня часами ломать голову. Ответа от разработчиков Fresco пока нет.

РЕДАКТИРОВАТЬ: проблема исправлена ​​в Fresco v0.14.

person James Busby    schedule 07.06.2016

По какой-то причине setAutoRotateEnabled(true) также не работал у меня, поэтому я заставил всегда поворачиваться на 90 градусов.

Код Котлина

       val request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setResizeOptions(ResizeOptions(width, height))
            .setRotationOptions(RotationOptions.forceRotation(RotationOptions.ROTATE_90))
            .build()
person Jorge Casariego    schedule 29.08.2018