Fresco对大图像(> 2048px)的自动调整大小是否可以禁用/调整?

时间:2018-12-13 20:45:18

标签: android image fresco

在尺寸大于2048像素的壁画automatically applies a resizing的图像上:

  

Android不能在任何一个维度上显示超过2048个像素的图像。这超出了OpenGL渲染系统的能力。如果超出此限制,壁画将调整图像大小。

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

以下是Fresco如何使用默认设置渲染750x2440图像的示例: enter image description here

这是Picasso上具有默认设置的同一张图片: enter image description here

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

Gist of the code used in the images above

P.S。:Here's the URL of the image used in my testing

1 个答案:

答案 0 :(得分:1)

我只能使用isResizeAndRotateEnabledForNetwork()类中的ImagePipelineConfig来实现此目的,而无需调整下采样。<​​/ p>

初始化Fresco时需要添加一个附加步骤(在Application类中);通过configuring的图像管道。

这是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.initialize(this)初始化Fresco,而是添加ImagePipeline类,将其配置为使用.setResizeAndRotateEnabledForNetwork(false)禁用来自网络的图像大小调整,然后将配置的管道类传递给Fresco。

设置为false时:

resize_is_false

然后将其设置为true(很可能是默认值):

resize_is_true