11

有一种简单的php方法、简单的脚本或 URL 操作来为与电子邮件对应的gravatar图像构建 URL ?

Ex. http://gravatar.com/avatars/avatar.php?email=myemail@myserver.com这将返回一个 jpeg 或 png 图像。

如果没有像示例这样的简单方法,那么您知道解析与电子邮件对应的 gravatar 的 url 的最简单方法是什么?谢谢

4

6 回答 6

9

用这个:

$userMail = whatever_to_get_the_email;

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

$imgUrl = 'http://www.gravatar.com/avatar/'.md5($userMail).'fs='.$imageWidth;
于 2011-12-20T19:40:37.757 回答
8

您可以在他们的实现站点上找到带有 PHP 代码的示例脚本:http: //en.gravatar.com/site/implement/php

于 2010-04-27T05:20:39.883 回答
6

根脚本位于http://www.gravatar.com/avatar/ URL 的下一部分是所请求用户的小写电子邮件地址的十六进制MD5 哈希,所有空格都被修剪。您可以添加正确的文件扩展名,但它是可选的。

完整的 API 在这里http://en.gravatar.com/site/implement/

于 2010-04-27T05:17:12.220 回答
1

尽管@dipi-evil 的解决方案效果很好,但我并没有得到更大的图像。这是我如何让它正常工作的方法。

$userMail = 'johndoe@example';

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

$imgUrl = 'https://secure.gravatar.com/avatar/'.md5($userMail).'?size='.$imageWidth;
于 2016-12-09T15:42:59.873 回答
1

您可以看到 Gravatar 的这个简单功能,它可以:

  1. 检查电子邮件是否有任何 gravatar。
  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");
}
于 2018-07-01T10:25:35.600 回答
0

您可以使用此代码在 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.

}
于 2020-09-07T11:01:11.760 回答