Android: 如何使用 Fresco 旋转图像

Android: how to rotate image using Fresco

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

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

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

我通过设置 .setDownsampleEnabled(false) 解决了这个问题。我不知道为什么,但我想下采样确实是实验性的,并且可以防止 auto-rotating 发生。

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

我最近打开了一个关于这个的 issue,默认情况下自动旋转是打开的,但这在任何地方都没有记录,这让我头疼了好几个小时。尚未收到 Fresco 开发人员的回复。

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

出于某种原因 setAutoRotateEnabled(true) 对我也不起作用所以我被迫总是旋转到 90 度

Kotlin 代码

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