【问题标题】:How to load images from remote MySQL blob with a library like Picasso, Glide or Universal Image Loader?如何使用 Picasso、Glide 或 Universal Image Loader 等库从远程 MySQL blob 加载图像?
【发布时间】:2015-07-06 20:45:53
【问题描述】:

我有一个远程 MySQL 数据库,其中有我要加载的图像块。

我一直在尝试使用 Picasso、Glide 或 Universal Image Loader 加载它们,因为我的意图是使用线程和缓存来完成。

如何进行 POST 请求,通过(PHP 中的 $_POST)发送参数并接收带有图像编码的 JSONObject,最后库将其加载到图像视图中?哪个是最好的选择?

例如用php传递链接,并以某种方式传递参数..:

String user_id = "0"; //Whatever

Picasso.with(this).load("http://myhost.com/load_image.php?id="+user_id).into(imageView);

我的 PHP 返回一个带有字符串“image”=(以 BASE 64 编码的图像)的 JSONObject。

【问题讨论】:

  • 欢迎来到 Stack Overflow!这个问题的信息有点少。能分享一下你尝试过的,遇到了什么问题吗?
  • @JayBlanchard 好的,我会试试的!对不起

标签: php android mysql android-glide


【解决方案1】:

如果你使用 Glide,你可以尝试创建一个自定义的ModelLoader。您可以在DataFetcher 中实现您的请求,从 JSOBObject 中解析出图像的字节,并返回一个包含 blob 中数据的InputStream。你可能想要创建一个自定义数据类型,所以 Glide 知道要使用哪个 ModelLoader:

JSONImageModel glideModel = new JSONImageModel(url);

然后您的模型加载器可以在您的GlideModule 中注册该类型:

@Override
void registerComponents(Context context, Glide glide) {
    glide.register(JSONImageModel.class, InputStream.class, new JSONImageModelLoader.Factory());
}

对您的模型类型的模型的任何请求都将被定向到您的自定义 ModelLoader,后者将获取数据并将其传递给 Glide 现有的解码器:

Glide.with(fragment)
    .load(new JSONImageModel(url))
    .into(imageView); 

您可以在 Glide 的configuration wiki page 上找到有关注册自定义 ModelLoader 的更多信息。虽然它旨在下载可变图像大小,但也有一个wiki page that describes creating a custom model loader,可能会有所帮助。

【讨论】:

  • 有这方面的例子吗?我无法理解如何做到这一点
猜你喜欢
  • 2020-03-24
  • 2018-07-11
  • 2015-11-28
  • 1970-01-01
  • 2014-05-19
  • 2013-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多