Glide 缓存转换后的图像还是原始图像?

Does Glide cache the transformed image or the original one?

我正在使用 centerCrop() 和 Glide。

Glide.with(yourFragment)
    .load(yourUrl)
    .centerCrop()
    .into(yourView);

当使用这样的 transformation 时,Glide 缓存最终的 bitmap 还是会继续 cache 原始的 image 和每次显示 ImageView 时应用转换?基本上,我试图了解它是如何工作的,并确定是否需要编写自定义代码来缓存最终转换后的图像。

Glide cache the final bitmap or will it continue to cache the original image and apply the transformation to it every time the ImageView is shown?

Glide 中,缓存原始的全分辨率图像以及该图像的较小版本。例如,如果您请求一张 1000x1000 像素的图像,而您的 ImageView 是 500x500 像素,则 Glide 会将图像的两个版本都放入缓存中。

在纪德,我们有不同的DiskCacheStrategy。基于这个可用的策略,我们可以决定图片的缓存。

DiskCacheStrategy.NONE -> 什么都不缓存

DiskCacheStrategy.ALL -> 缓存图像的所有版本

DiskCacheStrategy.DATA -> 仅缓存原始全分辨率图像。

DiskCacheStrategy.RESOURCE -> 在降低分辨率(以及可能的转换)后仅缓存最终图像

DiskCacheStrategy.AUTOMATIC -> 根据资源智能选择缓存策略(Glide 的默认行为4.x)

如果您有一张您知道自己会经常处理并制作它的多个不同版本的图像,那么只缓存原始分辨率是有意义的。因此,我们会告诉 Glide 只保留原始文件。

GlideApp  
    .with(context)
      .load(yourUrl)
      .diskCacheStrategy(DiskCacheStrategy.DATA)
      .into(imageView);

有关这方面的更多信息,请查看 Glide documentation