2015-02-12 1 views
1

Я пытаюсь создать приложение Android для Android от Google, где я смогу загрузить измененные изображения с диска Google.Google drive Android Api запрошенный размер изображения скачать

Это своего рода проблема с производительностью. Предположим, что я загрузил изображение 1080px с моего компьютера, теперь я хочу загрузить это изображение на свой Android-телефон, который не поддерживает изображение 1080px, поэтому происходит то, что изображение сначала загружается, а затем изменяется по размерам моего устройства. Но это фактически потеря времени и данных.

Зачем загружать изображение 1080px, когда я могу только показать, может быть как 480px или 720px изображение.

Я использую Google api, но я хотел бы знать, есть ли какой-то параметр или что-то, что мы можем передать с телефона, чтобы мы могли загрузить только измененное изображение.

По моему поиску, Link

Существует эта Частичная загрузка, где я могу дать диапазон байт, но я не пытаюсь загрузить определенную часть файла, я хочу, чтобы загрузить все изображение файл в измененном формате.

Любые идеи, подсказки будут очень полезны.

Благодаря

+1

Кто-то никогда не голосовал, я не против, если вы его голосуете, но, пожалуйста, поделитесь своими мыслями, если у вас есть какие-либо идеи, это будет очень полезно. – Ari

+0

Вы правы, это один из вопросов, который может быть интересен многим. На самом деле загрузка уменьшенных размеров изображения для предварительного просмотра (эскизов) до того, как пользователь выбирает полномасштабное изображение, является основой любого облака основанное приложение.Особенно телефоны на платной/ограниченной полосе пропускания. И это не всегда должно быть статическим размером «миниатюры». Приложение должно указать, какое разрешение оно хочет. – seanpj

ответ

2

Ответ относится к RESTful Api, поскольку GDAA не имеет функции 'thumbnailLink' по состоянию на сегодня (Feb 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

мне удалось вытащить образ запрошенный размер (позволяющий серверу уменьшить его).

ОТКАЗ:

Это не документированная функция, так что это HACK. Я также признаю, что более надежная версия не должна полагаться на поиск «s220», но, вероятно, «= sNUMBER» patttern. Удачи.

+0

Также вы можете получить URL-адрес изображения с этим шаблоном: 'https://googledrive.com/host/ /'. Но это не прямой URL. Поэтому он не будет работать с такими библиотеками, как ион. Спасибо. – rkyr

Смежные вопросы