Как создать 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, которая может:
- Проверьте, есть ли в письме граватар или нет.
Верните изображение 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.
}