2015-02-12 81 views
1

我想創建一個谷歌驅動器的Android應用程序,我應該能夠從谷歌驅動器下載調整大小的圖像。谷歌驅動器Android Api請求維度圖像下載

這是一種性能問題。 假設我已經從我的電腦上傳了一張1080px的圖片,現在我想將該圖片下載到我的Android手機,該圖片不支持1080px圖片,那麼會發生什麼情況是首先下載圖片,然後根據我的設備尺寸調整圖片大小。但這實際上是浪費時間和數據。

爲什麼在我只能顯示時下載1080px圖像可能就像是480px或720px圖像。

我正在使用Google驅動器api,但我想知道是否有某些參數或我們可以從手機傳遞的信息,以便我們只下載調整大小的圖像。

按我的搜索, Link

有這部分下載,我可以給一個字節範圍,但我並不想下載文件的特定部分,我想下載整個圖像文件以調整大小的格式。

任何想法,線索將是非常有益的。

感謝

+1

誰永遠是投票,我不介意你投票,但如果你有任何想法,請分享你的想法,這將是非常有益的。 – Ari 2015-02-12 08:22:44

+0

你是對的Ari,這是許多人可能感興趣的問題之一。事實上,在用戶選擇獲得完整圖像之前,下載縮小圖像大小以進行預覽(縮略圖)是任何雲的主要支柱基於應用。特別是在付費/有限帶寬上的手機。並不總是必須是靜態的「縮略圖」大小。該應用程序應該指定它想要的分辨率。 – seanpj 2015-02-12 21:40:51

回答

2

答案適用於RESTful Api,因爲GDAA沒有一個「thumbnailLink」功能今日(2月14 2015年)。

我使用這個代碼段來下載縮小圖像和縮略圖:

/** 
* 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」到下列值之一:

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

我設法拉的圖像請求的大小(讓服務器減少它)。

免責聲明:

這是不是一個文檔的功能,所以它是一個黑客。我也承認,更強大的版本不應該依賴於找到「s220」,但可能「= sNUMBER」patttern。 祝你好運。

+0

你也可以通過這種模式獲得圖片網址:https://googledrive.com/host/ /'。 但它不是直接的網址。所以它不適用於離子等庫。謝謝。 – rkyr 2015-12-16 15:12:33