谷歌驱动Android Api请求维度图像下载

时间:2015-02-12 08:10:45

标签: android google-drive-android-api

我正在尝试创建一个Google驱动安卓应用,我可以从Google云端硬盘下载调整大小的图片。

这是一种性能问题。 假设我已经从我的计算机上传了一张1080px的图像,现在我希望将该图像下载到我的不支持1080px图像的Android手机上,所以会发生的情况是先下载图像,然后根据我的设备尺寸调整图像大小。但这实际上是浪费时间和数据。

为什么在我只能显示时下载1080px图像可能像480px或720px图像。

我正在使用谷歌驱动器api,但我想知道是否有一些参数或我们可以通过手机传递的东西,以便我们只能下载调整后的图像。

根据我的搜索, Link

有这个部分下载,我可以提供一系列字节,但我不是要下载文件的特定部分,我想以调整大小的格式下载整个图像文件。

任何想法,线索都会非常有用。

由于

1 个答案:

答案 0 :(得分:2)

答案适用于RESTful Api,因为GDAA没有' thumbnailLink'截至今日(2015年2月14日)的功能。

我使用此代码段下载缩小的图像和缩略图:

/**
 * get file contents, specifically image. The thmbSz, if not zero, it attempts to 
 * retrieve an image thumbnail that fits into a square envelope of thmbSz pixels
 * @param rsId   file id
 * @param thmbSz reduced size envelope (optional value, 0 means full size image / file)
 *   (tested with: 128,220,320,400,512,640,720,800,1024,1280,1440,1600)
 * @return       file's content  / null on fail
 */
com.google.api.services.drive.Drive mGOOSvc;
...
static byte[] read(String rsId, int thmbSz) {
  byte[] buf = null;
  if (rsId != null) try {
    File gFl = (thmbSz == 0) ?
      mGOOSvc.files().get(rsId).setFields("downloadUrl").execute() :
      mGOOSvc.files().get(rsId).setFields("thumbnailLink").execute();
    if (gFl != null){
      String strUrl;
      if (thmbSz == 0)
         strUrl = gFl.getDownloadUrl();
      else {
         strUrl = gFl.getThumbnailLink();
         if (! strUrl.endsWith("s220")) return null; //--- OOPS ------------>>>
         strUrl = strUrl.substring(0, strUrl.length()-3) + Integer.toString(thmbSz);
      }
      InputStream is = mGOOSvc.getRequestFactory()
                 .buildGetRequest(new GenericUrl(strUrl)).execute().getContent();
      buf = UT.is2Bytes(is);
    }
  } catch (Exception e) { UT.le(e); }
  return buf;
}

我有一些测试它有几个尺寸(请参阅方法标题),我从Picasa documentation here.

抓取

请参阅' thumbnailLink'具有

的形式
  

https://lh4.googleusercontent.com/R1Pi...blahblah...08qIhg=s 220

并通过更改' 220'最后是其中一个值:

  

128,220,320,400,512,640,720,800,1024,1280,1440,1600

我设法拉出了请求大小的图像(让服务器减少它)。

免责声明:

它不是一个记录的功能,所以它是一个HACK。我也承认更强大的版本不应该依赖于找到" s220",但可能" = sNUMBER" patttern。 祝你好运。