我正在开发一个应用程序,该应用需要从其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(