我正在开发一个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);
我想知道是否有什么方法可以改进以更快地加载图像。也许以特定格式存储它们。
答案 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