【问题标题】:How to decrypt image before load with Glide如何在使用 Glide 加载之前解密图像
【发布时间】:2019-03-25 00:12:33
【问题描述】:

我是滑翔新手,遇到了一个非常烦人的问题。我想使用 glide 将加密图像从 url 加载到图像视图,如果图像未加密,下面的代码效果很好,但我想使用 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

【问题讨论】:

  • Can I use ImageEncoder。如果图像是加密的,你需要一个解密器才能开始。即使是解码器也不行。这适用于编码图像。
  • 好吧,但我该怎么办?如何使用 glide 制作解密器?请帮忙
  • 我认为您的图像已编码。请找出方法。
  • 什么意思?我从 URL 加载的图像已加密,我将使用 glide 解密图像?刚才我无法加载加密的图像。如何使用 glide 解密图像?我可以使用 ImageDecoder 吗?举例说明如何解密图像。
  • 请告诉加密类型。

标签: java android image encryption android-glide


【解决方案1】:

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

方法一、分别解密加载

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

优点:易于编码。

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

方法二、加载时使用GlideModule解密

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

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

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

结论

记住这一点:

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

祝你好运:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多