如何在加载Glide之前解密图像

时间:2017-11-30 13:15:07

标签: java android image encryption android-glide

我是新来的滑行,我有一个非常讨厌的问题。我想将来自url的加密图像加载到带有滑动的图像视图中,如果图像没有加密,下面的代码效果很好,但是我想通过滑动加载来自url的加密图像。这有可能吗?图像的格式为JPG。我正在使用的代码

Glide.with(itemView.getContext())
.load(URL)
.crossFade()
.fitCenter()
.placeholder(R.drawable.loading)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into(chat_image_outgoing)

如何在加载图像之前解密图像?我可以使用ImageEncoder吗?请帮我解释一下如何解决这个问题。

滑翔版:3.8.0

1 个答案:

答案 0 :(得分:0)

我最近使用两种方式解密,虽然都不是完美的。

方法1.分别解密和加载

  1. 解密目标图像文件,并将结果保存到临时缓存文件夹中。 如果愿意,可以像.hidecache/一样隐藏该文件夹。
  2. 使用Glide从缓存文件夹中加载图像。

优点:易于编码。

缺点:保留解密的缓存文件。

方法2。加载时使用GlideModule解密

  1. 创建自己的GlideModuleModelLoaderDataFetcher
  2. DataFetcher内,使用FilterInputStream处理/解密InputStream(只需覆盖两个read()方法)

优点:如果正确设置了Glide缓存类型,则没有缓存文件。

缺点:所有GlideModule都注册在AndroidManifest中,这使查找图像解密方式变得更加容易。

结论

请记住这一点:

解密后的图像最终会显示在屏幕上,每个人都可以使用屏幕截图来获取它们。

祝你好运:)