在Android中显示来自驱动器的图像

时间:2017-09-19 15:54:49

标签: android image picasso drive fresco

我正在使用Fresco库在我的Android应用中显示图片。我想显示一些我用公共资助设置的图像(jpg或png)。

当我进行快速测试时,我只是从互联网上拍摄任何图像来设置网址,但在使用我需要使用的真实图片时,我有以下网址https://drive.google.com/uc?export=view&id=<&gt ;,但是因为它是一个重定向,一旦重定向,新的网址不是图像本身,Fresco无法显示它。

我曾尝试将毕加索作为替代图书馆,但取得了成功。

我还尝试了两个库的下载网址(https://drive.google.com/uc?export=download&id=<>)。但没有结果。

有人知道如何才能获得这些图片?或者唯一的解决方案是下载它(使用第二个url)处理收到的对象存储它的位图并显示它?

下载它,我应该使用什么以及如何使用?改造?

提前致谢。

3 个答案:

答案 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() {

                                }
                            });

希望它会对你有所帮助。