Google Photos (Google Album Archive) управление ссылками.

Введение.

В предыдущей статье о Google Album Archive я упомянул о том что постоянные ссылки на ваши фото из Google Album Archive не являются ссылками в строгом смысле слова, а нечто вроде команд серверу Google как обработать ваше фото и вернуть его в ответ на запрос. Рассмотрим этот вопрос детальнее. Итак, что мы знаем о Google Album Archive? Идем на страничку помощи и видим, что не знаем ничего. Поэтом забросим официальную документации и займемся тем что известно Интернету, при этом будем иметь ввиду что Google в любой момент может изменить поведение своего сервиса хранения фотографий.

Взглянем внимательно на URL получаемый от Google Album Archive.
https://lh3.googleusercontent.com/-lgRkVi-gYfru0lLSs1Pd4PSPkNijHX7PJcCbZoP9Qshu2ZO03ryIftWX6IlLbotngu9vvib8FcVFbY=w1280-h1024-no

Сразу видно что состоит он из двух частей (помимо HTTP схемы и домена):

  • ID. Идентефикатор ресурса (изображения), закодирован в BASE64.
  • Команды обработки. Следуют сразу за BASE64 суффиксом =, сразу после ID. И разделены символом -.

Из приведенного выше примера видно, что мы запрашиваем изображение с параметрами: w1280, h1024, no.

Команды.

Известных команд 1 не много, вот они в порядке их возможного появления в строке запроса:

  • -w??? - задать ширину результирующего изображения.
  • -h??? - задать высоту результирующего изображения. Может комбинироваться с командой -w??? задавая область в которую нужно вписать результирующее изображение. Замечу, что ни при каких параметрах не получится исказить пропорцию фотографии, она всегда будет такой как в исходном снимке.
  • -s??? - задает ширину наибольшей стороны результирующего изображения. Для альбомных фотографий эта команда эквивалентна -w???, а для портретных - -h???.
  • -s0, -w0, -h0, -w0-h0 - возвращают исходное, не модифицированное изображение.
  • -c - Crop. Команда работает только вместе с командами: -w???, -h???, -w???-h??? -s???. Изображение строится так, чтобы полностью заполнить заданную область по одной из сторон, а затем обрезаются выступающие за границы части изображения.
  • -p - полностью аналогична -c. Но если команда -c отсекает выступающие части сохраняя центральную часть изображения видимым и центрированным, то - команда -p "выбирает наиболее интересную часть" изображения и обрезает остатки. Как выбирается "наиболее интересная часть" известно только Google и его хитрым алгоритмам.
  • -no - возвращает изображение с большим объемом информации, что именно делает эта команда - неизвестно.
  • ?:.jpg, -tmp-jpg - эта команда может быть только самой последней и основная её цель - добавить расширение .jpg к ресурсу, чтобы избежать проблем на тех сайтах, которые требуют чтобы ссылки на изображения всегда содержали расширения. Учтите, что формат изображения должен совпадать с форматом расширения ресурса .jpg, т.к. сервер всегда возвращает изображения с MIME типом "image/jpeg".

Примеры.

s350-no - построить изображение в 350px по большей стороне:

h350-no - построить изображение в 350px по высоте. Ширина при этом получается 525px исходя из пропорции исходного снимка:

w350-h350-no - вписать изображение в прямоугольник 350px на 350px, визуально идентично команде s350-no:

w350-h350-c-no - заполнить прямоугольник 350px на 350px по большей из сторон исходного изображения, остальное обрезать сохранив центральную зону видимой:

w350-h350-p-no - заполнить прямоугольник 350px на 350px, остальное обрезать, видимую часть выбрать самостоятельно, по "хитрым алгоритмам":

w350-h150-p-no - чуть более сложный пример - заполнить прямоугольник 350px на 150px, вписав наибольшую по пропорции 350/150 сторону и сохранив "самую интересную" часть изображения по "хитрым алгоритмам":

И, домашнее задание: w150-h350-c-no

profile for 23W on Stack Exchange, a network of free, community-driven Q&A sites Google+