Мы живем в эпоху победившего вебДваНоль и ни для кого не секрет, что социальные сервисы правят если уж не Миром, то интернетом точно. Не только пользователи, но и разработчики не могут игнорировать основные тенденции - и вот, хочется написать о набирающем все большую и большую популярность сервисе Gravatar и использованию его в приложениях.
Что это такое
Gravatar - это сервис для предоставления глобально уникальных аватаров привязанных к адресу электронной почты пользователя. Попросту говоря, вы регистрируетесь на gravatar, указываете адрес своей электронной почты, закачиваете картинки. После этого все сервисы, на которых вы оставляете свой имейл могут запрашивать аватарки с gravatar.
Зачем это нужно
Зачем это нужно пользователю конечно понятно. Попробую рассказать зачем это нужно программисту. Допустим разрабатывается веб-сайт. Вне зависимости от тематики он конечно же будет содержать социальные элементы, без этого сейчас никуда. А значит будет возможность регистрации пользователей и каждый пользователь будет иметь свой профиль. Теперь вопрос: как организовать хранение аватаров пользователей в базе? Аспектов у этой задачи много: как хранить картинки - в базе или как файлы на диске? В каком размере хранить картинки если в приложении нужно использовать несколько вариантов? Какое изображение показывать пока пользователь еще не выбрал аватар. Можно конечно решить все эти вопросы и изобрести очередной велосипед. А можно вместо этого воспользоваться сервисом gravatar и сосредоточиться на реализации основной бизнес-логики.
Как это работает
Итак, у нас есть e-mail пользователя и нужно “превратить” его в ссылку на аватар. Url аватара строится в несколько этапов:
- Берем основной урл сервиса gravatar http://www.gravatar.com/avatar
- Далее дополняем строкой хэша e-mail адреса. Хэш строится по алгоритму MD5. Получается что-типа http://www.gravatar.com/avatar/b7ac7166dba99523395197f9918121f0. Уже эта ссылка работоспособна и ее можно использовать в качестве атрибута src тега img:
Но чтобы сделать аватар более привлекательным лучше добавить еще несколько параметров
- Добавляем параметр size (или для краткости просто s) для определения размера. Можно задать значение от 1 до 512 пикселей. Если параметр size/s не задан, то будет показана картинка размером 80 пикселей. Вот как выглядит аватар с указанием размера 50px:
- Добавляем параметр rating (или r). В сервисе gravatar используется разделение картинок по рейтингу (типа голивудской категории “жесткости” фильма). Значения параметра рейтинга по возрастанию взрослости/жесткости: g, pg, r, x. И пример.
- Добавляем параметр d (default) для определения картинки по умолчанию. “Картинка по умолчанию” - это то, что отображается в качестве аватара если пользователь не зарегестрирован в сервисе. Если параметр не указан, то это буква G синем фоне:
Задавая определенные значения параметра d можно получить разные изображения:
d=identicon d=monsterid d=wavatar
Пример кода на C#
Ну и в заключение, метод, возвращающий ссылку на аватар по адресу электронной почты:
{
const string GravatarUrlFormat = "http://www.gravatar.com/avatar/{0}?r=G&s={1}&d=wavatar";
var result = new StringBuilder();
if (!string.IsNullOrEmpty(email))
{
byte[] hash;
using (MD5 md5 = MD5.Create())
{
byte[] data = Encoding.Default.GetBytes(email.ToLowerInvariant());
hash = md5.ComputeHash(data);
}
for (int i = 0; i < hash.Length; i++)
{
result.Append(hash[i].ToString("x2", CultureInfo.InvariantCulture));
}
}
return string.Format(GravatarUrlFormat, result, size);
}