有一种简单的php方法、简单的脚本或 URL 操作来为与电子邮件对应的gravatar图像构建 URL ?
Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com
这将返回一个 jpeg 或 png 图像。
如果没有像示例这样的简单方法,那么您知道解析与电子邮件对应的 gravatar 的 url 的最简单方法是什么?谢谢
用这个:
$userMail = whatever_to_get_the_email;
$imageWidth = '150'; //The image size
$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;
您可以在他们的实现站点上找到带有 PHP 代码的示例脚本:http: //en.gravatar.com/site/implement/php
根脚本位于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.
}