【问题标题】:Glide takes long time before displaying large imagesGlide 需要很长时间才能显示大图像
【发布时间】:2017-01-18 15:43:21
【问题描述】:

我正在尝试将图像(每个大约 5mb)加载到 RecyclerView 中大小为 45x45 dp 的 ImageView 中。即使原始图像很大,Glide 不会因为目标 ImageView 很小而加载它的较小版本吗?因此,我希望 Glide 能够在几秒钟内以平均互联网速度加载图像。但是,它需要大约 20 秒。有什么问题?

图像存储在 Firebase 存储中。

滑行代码:

Glide.with(context).load(firebaseStorageUrl).into(imageView);

【问题讨论】:

    标签: android android-glide


    【解决方案1】:

    Glide 需要先从 Internet 加载完整图像,然后才能调整其大小。所以第一次下载需要很长时间。之后,如果您激活了缓存,它可以使用它创建的缓存中的小图像。

    【讨论】:

    • 所以服务器中的图像文件大于 1mb 是错误的吗?
    • 这真的取决于你打算用它们做什么。如果您不需要高分辨率,请不要存储它。但是,如果您需要高分辨率版本的其他内容,您还应该在另一个文件夹中添加小版本或使用“thumb_”之类的前缀
    【解决方案2】:

    如果您不想加载较小的文件,我建议使用Gif-drawable 库将大图像从 Glide 加载到 GifDrawable(用作 ImageView)。

    它可以非常快速地加载超过 100MB 的文件。它也适用于普通的 JPG、PNG 和 BMP。如果这些是 GIF,它会毫无延迟地播放或冻结。

    如果 android:src 和/或 android:background 声明的 drawables 是 GIF 文件,那么它们将被自动识别为 GifDrawables 并具有动画效果。如果给定的 drawable 不是 GIF,那么提到的 View 就像普通的 ImageView 和 ImageButton 一样工作。

    【讨论】:

      【解决方案3】:

      Glide 首先下载图像,然后您可以将图像检索为位图以调整图像大小和压缩图像。但是,这并不能解决您的问题。可能有两种解决方案:

      1. 在服务器中保留小尺寸图片。
      2. 使用文件下载器库,它有助于以队列的形式串行和异步下载图像,这有助于快速下载文件。 FileDownloader library 是一个不错的选择。

      【讨论】:

        【解决方案4】:

        在 Glide 中使用 Override 以更快地加载图像。

        【讨论】:

        • 你能详细解释一下吗?
        猜你喜欢
        • 2020-01-14
        • 1970-01-01
        • 2012-10-26
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2013-11-18
        • 1970-01-01
        • 2021-12-19
        相关资源
        最近更新 更多