从URL加载图像的高效,更快的方式



我正在开发一个应用程序,该应用需要从其URL中加载多个图像。我将所有图像保存在Firebase存储中。我目前正在使用压缩机来减小尺寸。

 newImageFile=new File(uri1.getPath());
                    try {
                        compressedImageFile = new Compressor(ProductAdd.this)
                                .compressToBitmap(newImageFile);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                     baos = new ByteArrayOutputStream();
                    compressedImageFile.compress(Bitmap.CompressFormat.JPEG, 100, baos);
                     thumbData1 = baos.toByteArray();

和我使用Glide从URL

加载图像
Glide.with(context).load(imgUrl).into(holder.cutImg);

我想知道是否有任何方法可以改进以更快的速度加载图像。也许以特定格式存储它们。

您可以在原始图像加载之前将原始图像的缩略图加载到图像视图中。

Glide.with(fragment)
  .load(url)
  .thumbnail(0.05f)
  .into(imageView);

这将将原始图像的5%质量加载到视图中,当完整的图像加载时,它将被替换。

,如果您有一个单独的缩略图URL,则

Glide.with(fragment)
  .load(url)
  .thumbnail(
    Glide.with(fragment)
      .load(thumbnailUrl))
  .into(imageView);

现在,当图像加载时,它将立即加载到视图中,您可以在此处使用过渡以实现光滑的效果。

Glide.with(fragment)
    .load(url)
    .thumbnail(0.05f)
    .transition(DrawableTransitionOptions.withCrossFade())
    .into(view);

您可以查看我的项目,我也可以首先压缩图像并将thuntail图像存储到firebase存储中,然后加载它。

您也可以尝试不同的DiskCacheStrategies,但我建议使用默认一个,它可以正常工作!

这里有各种磁盘级别:

.diskCacheStrategy(DiskCacheStrategy.ALL)
.diskCacheStrategy(DiskCacheStrategy.NONE)
.diskCacheStrategy(DiskCacheStrategy.DATA)
.diskCacheStrategy(DiskCacheStrategy.AUTOMATIC)
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)

您可以使用光盘策略,该策略将用于将图像存储在光盘上。因此,首先可能需要一些时间来加载,但以后根本不需要时间。

Glide 4.x

Glide  
    .with(context)
      .load(imgUrl)
      .diskCacheStrategy(DiskCacheStrategy.DATA)
      .into(holder.cutImg);

Glide 3.x

Glide
   .with(context)
   .load(imgUrl)
   .diskCacheStrategy(DiskCacheStrategy.SOURCE)
   .into(holder.cutImg);

请注意:如果您只是在不更新URL的情况下更新图像,则不会刷新图像。因此,如果您想查看更新的图像,则必须更新URL,并且Glide将自动为您下载图像。

如果您使用的是firebase存储来托管图像:使用firebaseui,您可以快速轻松地下载,缓存和从存储中显示带有滑行的图像。来源

glide.with(context(.load(model.imageurl(.thumbnail(0.05f(.into(holder.imageview(

最新更新