Gravatar: 是否有默认图片?

42
我已经在正在构建的门户网站中实现了gravatar,并想知道是否有gravatar的默认图像URL?并非所有访问该网站的人都已登录或拥有电子邮件地址,在这种情况下,是否有可以显示的默认图像(通过gravatar url可访问)。
5个回答

69

要选择默认图片,可以使用d参数:

http://www.gravatar.com/avatar/3b3be63a4c2a439b013787725dfce802?d=identicon

或者没有哈希标记:

http://www.gravatar.com/avatar/?d=identicon

或者不使用d参数:

http://www.gravatar.com/avatar

来源: gravatar.com.


通常来说这也是我的建议。然而,它不能满足他的需求,因为有些用户没有注册,也没有拥有电子邮件地址(因此无法被哈希并发送到 Gravatar)。 - Mark Embling
嗯,奇怪。根据你提供的Gravatar指南,哈希是必需的(不是可选的)。我想知道它是否能够工作是设计上的还是巧合。但是如果它能够工作,那肯定是另一个选择。 :) - Mark Embling
1
哈哈...我刚刚意识到它甚至不需要任何东西也能工作...: ) - Macmade

34

Gravatar在此处描述了默认图像的选项:http://en.gravatar.com/site/implement/images/

您可以通过向URL添加适当的名称/值对来选择所需的选项。例如,您可以使用“神秘人物”(d=mp),如下所示:

上面的图像是使用URL http://www.gravatar.com/avatar/?d=mp 创建的。请注意,电子邮件哈希字符串已被省略,但通常您将包括它作为请求的一部分。

上述链接列出的选项:

  • 404: 如果未关联任何图像,则不加载任何图像,而是返回HTTP 404 (文件未找到)响应
  • mp:(神秘人物)一个简单的,卡通风格的人物轮廓剪影(不因电子邮件哈希而变化)
  • identicon:基于电子邮件哈希的几何图案
  • monsterid:具有不同颜色、脸部等的生成“怪物”
  • wavatar:生成的面孔具有不同的特征和背景
  • retro:强大的生成,8位街机风格的像素化面孔
  • robohash:具有不同颜色、脸部等的生成机器人
  • blank:透明的PNG图像(下面添加了边框以进行演示)

正如您所希望的那样,使用大小选项 s=<像素> 也会更改默认图像的大小。

enter image description here

上面的图像是使用http://www.gravatar.com/avatar/?d=retro&s=32 创建的。

感谢@Alireza Rezaee更新图像类型。


1
非常感谢,这帮了我很多! - xyz

5
你还可以使用自定义URL作为默认/回退头像。但是,自定义URL必须指向公开可用的图像,否则它不会显示。你可以在这里了解更多gravatar.com
以下是我在使用gravatar图片时使用的PHP函数。
function myprefix_get_gravatar_url( $email, $default='mm', $size=92 )
{
    $email = md5( strtolower( trim( $email ) ) );
    $default = urlencode( $default );
    $size = (int)$size;

    $url = 'http://www.gravatar.com/avatar/';
    if ( is_ssl() )
        $url = 'https://secure.gravatar.com/avatar/';

    return $url.$email."?d=".$default."&s=".$size;
}

示例用法:

$img2x = myprefix_get_gravatar_url( 
    'spacepants@goofygoof.it',
    'https://www.google.com/images/srpr/logo11w.png',
    184
);

4
不是的,那样就错过了Gravatar服务的重点。它的设计是让用户注册他们的电子邮件地址,并将一个gravatar图片与之关联。您的网站(和其他网站)可以查询Gravatar,以返回与所询问的电子邮件地址相关联的图片。
如果您想为甚至不输入电子邮件地址的用户显示图片,则我可以看到两种解决方案:
1. 在您自己的代码中实现。当您处理没有电子邮件地址的用户时,您可以输出自己选择的默认图像。当然,这意味着它不会使用gravatar地址,而是需要您自己提供服务。
2. 注册一个专门针对没有/输入自己电子邮件地址的用户的电子邮件地址。例如,您可以注册类似于default-gravatar@myapp.example.com的东西,然后将其注册到Gravatar服务中,并将您选择的默认图像与之关联。当构建图像URL时,您自己的应用程序代码仍需要输出相应的gravatar URL,将此电子邮件地址替换为用户不存在的电子邮件地址,但它将允许您使用您要求的gravatar URL。

2
你的第二个回答可以很容易地更改默认的Gravatar。大多数网站无论如何都需要至少一个电子邮件地址,所以这是个好主意。 - isimmons

1

对于那些只想要某个电子邮件图像的链接的人(这并不涉及到OP的请求,但是这个页面在网络搜索中很突出):几乎从任何POSIX shell中,您都可以生成“somebody@example.com”的256像素gravatar URL:

echo "http://gravatar.com/avatar/$(echo -n somebody@example.com | md5sum | awk '{print $1}')?s=256"

你需要认真思考,将somebody@example.com替换为实际的电子邮件地址。我包含了"?s=256"来展示如何指定大小。

我需要这个来向某人说明gravatar是什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接