我是 Glide 新手,有一个非常烦人的问题。我想使用 glide 将加密图像从 url 加载到 ImageView ,如果图像未加密,下面的代码可以正常工作,但我想使用 glide 从 url 加载加密图像。这可能吗?图片格式为 JPG。我现在使用的代码
Glide.with(itemView.getContext())
.load(URL)
.crossFade()
.fitCenter()
.placeholder(R.drawable.loading)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(chat_image_outgoing)
如何在加载图像之前对其进行解密?我可以使用 ImageEncoder 吗?请帮助我编写如何解决此问题的代码。
Glide 版本:3.8.0
最佳答案
我最近使用了两种解密方法,尽管都不是完美的。
方法一、单独解密加载
- 解密目标图像文件并将结果保存到临时缓存文件夹中。
如果您愿意,可以像
.hidecache/
一样隐藏该文件夹。 - 使用
Glide
从缓存文件夹加载图像。
优点:易于编码。
缺点:留下解密的缓存文件。
方法2.加载时使用GlideModule
解密
- 创建您自己的
GlideModule
、ModelLoader
和DataFetcher
。 - 在
DataFetcher
内部,使用FilterInputStream
处理/解密InputStream(只需重写两个read()
方法)
优点:如果 Glide 缓存类型设置正确,则不会有缓存文件。
缺点:所有GlideModule
都在AndroidManifest
中注册,这使得更容易找出图像是如何解密的。
结论
请记住这一点:
由于解密后的图片最终会显示在屏幕上,大家可以通过截图来获取。
祝你好运:)
关于java - 如何在使用 Glide 加载之前解密图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574392/