首页 > 解决方案 > 可以禁用/调整 Fresco 对大图像 (>2048px) 的自动调整大小吗?

问题描述

在具有 >2048px 长尺寸的图像上,Fresco自动应用调整大小

Android 无法在任一维度上显示长度超过 2048 像素的图像。这超出了 OpenGL 渲染系统的能力。如果超过此限制,Fresco 将调整您的图像大小。

我知道这是作为OpenGL Android 限制的一种解决方法,但是有什么方法可以控制它吗?

以下是 Fresco 如何使用默认设置渲染 750x2440 图像的示例: 在此处输入图像描述

这是默认设置下毕加索上的同一张图片: 在此处输入图像描述

我已经尝试过使用 Fresco 的调整大小/下采样但没有成功。

上图中使用的代码要点

PS:这是我测试中使用的图片的网址

标签: androidimagefresco

解决方案


我只能使用ImagePipelineConfig类中的isResizeAndRotateEnabledForNetwork()来实现这一点,我不需要调整下采样。

初始化 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


推荐阅读