【问题标题】:displaying an image from drive in Android在 Android 中显示来自驱动器的图像
【发布时间】:2017-09-21 00:42:44
【问题描述】:

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

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

我曾尝试将 Picasso 作为替代库,但没有任何成功。

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

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

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

提前致谢。

【问题讨论】:

    标签: android image picasso drive fresco


    【解决方案1】:

    Fresco 支持不同的网络堆栈。例如,您可以将 OkHttp 与 Fresco 一起使用,它应该遵循重定向或修改默认设置以允许重定向 - 或根据它们编写自己的。

    OkHttp 指南:http://frescolib.org/docs/using-other-network-layers.html

    相关 GitHub 问题:https://github.com/facebook/fresco/issues/61

    【讨论】:

      【解决方案2】:

      我找到了解决此问题的方法(但仅当您使用 Google Cloud 或 Google Script 时才适用)。

      它包括创建一个 doGet() 服务,其中包含以下代码:

      var file = DriveApp.getFileById(fileId)
      return Utilities.base64Encode(file.getBlob().getBytes());
      

      并在您的应用中使用该 base64 值。使用这种格式,Fresco 可以发挥作用

      这不是一个立竿见影的解决方案,需要在不是您的 Android 应用的其他平台上做一些工作,但它可以完美运行。

      【讨论】:

        【解决方案3】:

        您确定您的网址没有问题吗? Picasso 使用直接 URL,例如: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() {
        
                                        }
                                    });
        

        希望对你有帮助。

        【讨论】:

        • URL 没有问题,问题是当您将图片上传到 Google Drive 时,它​​没有为您提供图片的直接 url,因此不是直接访问。我在我发现的这个问题的解决方案下面发布了(虽然它需要一些操作抛出谷歌脚本......但一个可行的解决方法)
        猜你喜欢
        • 2015-04-07
        • 1970-01-01
        • 1970-01-01
        • 2014-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        相关资源
        最近更新 更多