MENU

互联网用户头像那点事

也许,你从未听说过 Gravatar,也从未对网站评论区头像怎么来的感到好奇?(就像本文评论区的那样),但你肯定见过类似下面的头像:

默认风格头像 MC风格头像

如果以前没见到现在也见过了。嘿嘿

其实这是通过你评论时提交的电子邮箱获取到的。就像某些小程序授权后就能获取到你的QQ / 微信头像那样。

与 QQ 类似,使用电子邮箱注册 Gravatar 账号后就可以将头像上传至服务器,之后就可以通过这个电子邮箱获取到设置的头像。

Gravatar

由于某些原因官方站访问较慢,建议使用镜像站:

官方站:

镜像站:

其中 HASH 部分是你的电子邮箱的哈希值,此邮箱需在 Gravatar 上注册并绑定头像,如果不存在,则返回默认头像。

// example.js 
const md5 = require( 'md5' );
function getCravatarURL( email ) {
    const address = String( email ).trim().toLowerCase(); //  邮箱转小写并去除首尾空格
    const hash = md5( address ); // 获取邮箱的MD5哈希值
    return `https://sdn.geekzu.org/avatar/${ hash }`; // 拼接出最终的头像URL
}
// example.php 
function get_gravatar_url( $email ) {
    $address = strtolower( trim( $email ) );  // 邮箱转小写并去除首尾空格
    $hash = md5( $address ); // 获取邮箱的MD5哈希值
    return 'https://sdn.geekzu.org/avatar/' . $hash; // 拼接出最终的头像URL
}

QQ

只需要 QQ 号即可获取对应的 QQ 头像,有暴露明文 QQ 号和隐藏 QQ 号俩种:

第一种直接访问 http://q1.qlogo.cn/g?b=qq&s=40&nk=[QQ] 即可,其中 [QQ] 替换为对应的 QQ 数字即可,如:

// QQ 号为 12345 的暴露明文 QQ 头像
http://q1.qlogo.cn/g?b=qq&s=40&nk=12345

第二种先请求 http://ptlogin2.qq.com/getface?&imgtype=1&uin=[QQ],响应链接即为对应的 QQ 头像,如:

pt.setHeader(
    {
        "12345": "https://thirdqq.qlogo.cn/g?b=sdk&k=ffxWIb7R5Rzpia88aM9SNXg&s=40&t=1555323417"
    }
)

其中 s=40 为头像图片大小,可选 40,100,140。

Cravatar

Cravatar 是 Gravatar 在中国的完美替代方案,更适合中国用户。

使用方法与 Gravatar 一致,但如果邮箱为数字 QQ 邮箱,可能会返回 QQ 头像,同时也会返回 Gravatar 设置的头像。

优先级:Cravatar > QQ > Gravatar > 默认头像,详见《Cravatar API 文档》

自由实现

function Authorimg($email){
    $QQNum=str_replace('@qq.com','',$email); // 获取邮箱的用户名,后续判断是否为 QQ 号(数字型,5-10 位)
    if( stristr($email,'@qq.com') && is_numeric($QQNum) && strlen($QQNum)<11 && strlen($QQNum)>4 ){
        $nk = 'https://s.p.qq.com/pub/get_face?img_type=3&uin='.$QQNum;
        $c = get_headers($nk, true);
        $d = $c['Location'];
        $q = json_encode($d);
        $k = explode("&k=",$q)[1]; // 得到 QQ头像 的 k 值
        echo 'https://q.qlogo.cn/g?b=qq&k='.$k.'&s=100'; // 拼接得到更高分辨率的头像链接
    }else{$email= md5($email);
        echo 'https://sdn.geekzu.org/avatar/'.$email.'?';
    }
}

如图片开启了防盗链或引用显示“未经许可不得转载”之类的或直接不显示图片,而在地址栏输入图片链接又可以正常浏览,可以参考《图片镜像缓存服务》解决!

最后编辑于: 2023 年 11 月 16 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码