从url

时间:2019-08-02 17:00:45

标签: android image firebase firebase-storage android-glide

我正在开发一个App,该App需要从其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从网址加载图片

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

我想知道是否有什么方法可以改进以更快地加载图像。也许以特定格式存储它们。

3 个答案:

答案 0 :(得分:0)

您可以使用光盘策略,该策略将用于在光盘上存储映像。因此,开始时可能需要花费一些时间才能加载,但之后完全不需要花费时间。

对于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会自动为您下载图像。

答案 1 :(得分:0)

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

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

这会将原始图像的5%的质量加载到视图中,并在加载完整图像后将其替换。

如果您有单独的缩略图网址,则

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);

您可以检出我的project,其中我还将首先压缩图像并将缩略图图像存储到Firebase存储中,然后再加载它。

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

以下是各种DiskCacheStrategies:

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

答案 2 :(得分:0)

如果您使用Firebase存储托管图像:使用FirebaseUI,您可以快速轻松地从Storage with Glide下载,缓存和显示图像。 source