Android:如何使用Fresco旋转图像

时间:2015-12-29 15:34:23

标签: android fresco

我正在使用Fresco通过uri将手机存储中的图像加载到SimpleDraweeView(内部和外部,使用内容提供商 - 'content://')。它们装载正常,但如果它们的属性中设置了方向,则继续旋转。我试图用.setAutoRotateEnabled(true)属性设置imageRequest,但由于某种原因它对我不起作用。有关如何旋转图像以正确显示它们的任何建议吗?

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

4 个答案:

答案 0 :(得分:3)

我通过设置.setDownsampleEnabled(false)解决了这个问题。我不知道为什么,但我想下采样是真正的实验,并阻止自动旋转发生。

答案 1 :(得分:1)

自动旋转是默认设置,因此如果设置了方向,图像将会旋转。如果这不是您想要的,请尝试将其设置为false。

答案 2 :(得分:1)

我也有同样的问题,在Fresco中启用了下采样会阻止您使用EXIF数据禁用图像的自动旋转。

我最近打开了issue关于此问题,并且默认情况下自动旋转已开启,但这在任何地方都没有记录,这导致我数小时的头痛。目前尚未得到Fresco开发者的回应。

编辑:此问题现已在Fresco v0.14中修复。

答案 3 :(得分:0)

由于某些原因, setAutoRotateEnabled(true)也不适用于我,所以我被迫始终旋转90度

科林代码

       val request = ImageRequestBuilder.newBuilderWithSource(uri)
            .setResizeOptions(ResizeOptions(width, height))
            .setRotationOptions(RotationOptions.forceRotation(RotationOptions.ROTATE_90))
            .build()