繁体   English   中英

如何使用Picasso,Glide或Universal Image Loader之类的库从远程MySQL blob加载图像?

[英]How to load images from remote MySQL blob with a library like Picasso, Glide or Universal Image Loader?

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

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

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

例如,通过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。

如果使用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的配置Wiki页面上找到有关注册自定义ModelLoader的更多信息。 尽管它旨在下载可变的图像大小,但也有一个Wiki页面,描述了创建自定义模型加载器的过程 ,这可能会有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM