Как создать URL-адрес изображения GRAVATAR из данного письма

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

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

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

5 ответов

Решение

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

Использовать этот:

$userMail = whatever_to_get_the_email;

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

$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;

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

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

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

$userMail = 'johndoe@example';

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

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

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

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

    <?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");
}

Вы можете использовать этот код, чтобы получить аватар электронного письма, установленный на Gravatar.com, или создать аватар по умолчанию, если для этого письма не найден аватар.

Вам просто нужно передать электронное письмо в качестве параметра и вызвать эту функцию в любом месте вашего проекта.

public function  get_avatar($email){

    $url = 'https://www.gravatar.com/avatar/'; // The gravatar's API url
    $url .= md5( strtolower( trim( $email ) ) ); // Hash the user's email
    $url .='.png?s=300'; // Get a custom image size

        //Extract the image if is set on Gravatar

    if ( isset($img) ) {
        foreach ( isset($atts) as $key => $val )
            $url .= ' ' . $key . '="' . $val . '"';
    }

    return $url; // Return the avatar's url or the default avatar if no image found.

}
Другие вопросы по тегам