Как создать URL-адрес изображения GRAVATAR из данного письма - PullRequest
9 голосов
/ 27 апреля 2010

Существует простой способ с помощью php , простого скрипта или манипуляции с URL, для создания URL-адреса для gravatar изображения, соответствующего электронному письму?

Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com и это возвращает изображение в формате JPEG или PNG.

Если простого примера, как в примере, не существует, как проще всего узнать URL граватара, соответствующего электронному письму? Спасибо

Ответы [ 5 ]

8 голосов
/ 27 апреля 2010

Вы можете найти пример скрипта с кодом PHP на сайте их реализации: http://en.gravatar.com/site/implement/php

8 голосов
/ 20 декабря 2011

Используйте это:

$userMail = whatever_to_get_the_email;

$imageWidth = '150'; //The image size

$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;
4 голосов
/ 27 апреля 2010

Корневой скрипт находится на http://www.gravatar.com/avatar/ Следующая часть URL - это шестнадцатеричный MD5 хэш адреса электронной почты запрашиваемого пользователя в нижнем регистре со всеми пробелами. Вы можете добавить правильное расширение файла, но это необязательно.

Полный API здесь http://en.gravatar.com/site/implement/

1 голос
/ 01 июля 2018

Вы можете просто увидеть эту простую функцию Gravatar, которая может:

  1. Проверьте, есть ли в электронном письме граватар или нет.
  2. Возвращает граватарное изображение для этого письма.

    <?php
    
    class GravatarHelper
    {
    
      /**
      * validate_gravatar
      *
      * Check if the email has any gravatar image or not
      *
      * @param  string $email Email of the User
      * @return boolean true, if there is an image. false otherwise
      */
      public static function validate_gravatar($email) {
        $hash = md5($email);
        $uri = 'http://www.gravatar.com/avatar/' . $hash . '?d=404';
        $headers = @get_headers($uri);
        if (!preg_match("|200|", $headers[0])) {
          $has_valid_avatar = FALSE;
        } else {
          $has_valid_avatar = TRUE;
        }
        return $has_valid_avatar;
      }
    
      /**
      * gravatar_image
      *
      *  Get the Gravatar Image From An Email address
      *
      * @param  string $email User Email
      * @param  integer $size  size of image
      * @param  string $d     type of image if not gravatar image
      * @return string        gravatar image URL
      */
      public static function gravatar_image($email, $size=0, $d="") {
        $hash = md5($email);
        $image_url = 'http://www.gravatar.com/avatar/' . $hash. '?s='.$size.'&d='.$d;
        return $image_url;
      }
    
    }
    

Вы можете использовать тогда как:

if (GravatarHelper::validate_gravatar($email)) {
   echo GravatarHelper::gravatar_image($email, 200, "identicon");
}
1 голос
/ 09 декабря 2016

Хотя решение @ dipi-evil работает нормально, я не получал увеличенное изображение с ним. Вот как я все заработал.

$userMail = 'johndoe@example';

$imageWidth = '600'; //The image size

$imgUrl = 'https://secure.gravatar.com/avatar/'.md5($userMail).'?size='.$imageWidth;
...