我正在使用Fresco库在我的Android应用中显示图片。我想显示一些我用公共资助设置的图像(jpg或png)。
当我进行快速测试时,我只是从互联网上拍摄任何图像来设置网址,但在使用我需要使用的真实图片时,我有以下网址https://drive.google.com/uc?export=view&id=<&gt ;,但是因为它是一个重定向,一旦重定向,新的网址不是图像本身,Fresco无法显示它。
我曾尝试将毕加索作为替代图书馆,但取得了成功。
我还尝试了两个库的下载网址(https://drive.google.com/uc?export=download&id=<>)。但没有结果。
有人知道如何才能获得这些图片?或者唯一的解决方案是下载它(使用第二个url)处理收到的对象存储它的位图并显示它?
下载它,我应该使用什么以及如何使用?改造?
提前致谢。
答案 0 :(得分:0)
Fresco支持不同的网络堆栈。例如,您可以将OkHttp与Fresco一起使用,它应该遵循重定向或修改默认值以允许重定向 - 或者根据它们编写您自己的重定向。
OkHttp指南:http://frescolib.org/docs/using-other-network-layers.html
相关GitHub问题:https://github.com/facebook/fresco/issues/61
答案 1 :(得分:0)
我找到了解决此问题的解决方案(但只有在您使用Google Cloud或Google Script时才适用)。
它包括创建一个doGet()服务,其中包含以下代码:
var file = DriveApp.getFileById(fileId)
return Utilities.base64Encode(file.getBlob().getBytes());
并在您的应用中使用该base64值。使用这种格式,Fresco可以做到神奇
这不是一个直接的解决方案,并且需要在不是您的Android应用程序的其他平台上做一些工作,但它运行良好。
答案 2 :(得分:0)
您确定您的网址没有问题吗? 毕加索使用直接网址,例如:https://kudago.com/media/images/place/06/66/06662fda6309ce1ee9116d13bd1c66d5.jpg
然后你可以下载你的图像:
Picasso.with(this)
.load(url)
.noFade()
.placeholder(R.drawable.placeholder_grey) //if you want to use a stub
.into(imageView, new com.squareup.picasso.Callback() {
@Override
public void onSuccess() {
//here you can operate with image after it is downloaded
}
@Override
public void onError() {
}
});
希望它会对你有所帮助。