java - 如何在使用 Glide 加载之前解密图像

标签 java android image encryption android-glide

我是 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

最佳答案

我最近使用了两种解密方法,尽管都不是完美的。

方法一、单独解密加载

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

优点:易于编码。

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

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

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

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

缺点:所有GlideModule都在AndroidManifest中注册,这使得更容易找出图像是如何解密的。

结论

请记住这一点:

由于解密后的图片最终会显示在屏幕上,大家可以通过截图来获取。

祝你好运:)

关于java - 如何在使用 Glide 加载之前解密图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47574392/

相关文章:

html - CSS:如何将照片的宽度传播到父元素或祖父元素?

java - 从对象引用访问父类(super class)方法(新手)

java - 更改 JMenuBar 的字体

css - *已编辑*当图像具有最大宽度时对齐图像及其标题

android - 如何使用 javacv/opencv 在 android 中将音频与视频集成?

android - 小部件问题 : BroadcastQueue: Background execution not allowed: receiving Intent

asp.net - 如何在asp.net的Gridview中获取路径存储在数据库中的图像

java - 无法启动 ActiveMQ JMS 消息代理

java - 将对象存储为映射中的键

java - 如何将菜单项添加到现有的 Android 应用程序菜单?