iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >typecho 调用 Gravatar 头像的几种思路
  • 422
分享到

typecho 调用 Gravatar 头像的几种思路

phptypechoGravatar 2023-09-02 22:09:01 422人浏览 泡泡鱼
摘要

Gravatar(英语:Globally Recognized Avatar)是一项用于提供在全球范围内使用的头像服务。只要你在 Gravatar 的服务器上上传了你自己的头像,你便可以在其他任何

Gravatar(英语:Globally Recognized Avatar)是一项用于提供在全球范围内使用的头像服务。只要你在 Gravatar 的服务器上上传了你自己的头像,你便可以在其他任何支持 Gravatar 的博客、论坛等地方使用它。

一、更换 Gravatar 头像源

有时候 Gravatar 头像默认的源或者修改的源失效了,无法显示图像,因此需要更换 Gravatar 头像源。

下面是一些推荐的源:(点击地址可查看是否存活)

源名称源地址/镜像文件夹
七牛 (推荐)https://dn-qiniu-avatar.qbox.me/avatar/
极客族 (推荐)Https://sdn.geekzu.org/avatar/
和令奇(推荐)https://cdn.helingqi.com/avatar/
九月的风https://cdn.sep.cc/avatar/
V2EXhttps://cdn.v2ex.com/gravatar/
Cravatarhttps://cravatar.cn/avatar/
Ihuanhttps://gravatar.ihuan.me/avatar/
lolihttps://gravatar.loli.net/avatar/
WeAvatarhttps://weavatar.com/avatar/

具体实现有2种办法:

方法一: 修改根目录下的 config.inc.PHP

        define('__TYPECHO_GRAVATAR_PREFIX__', 'http://dn-qiniu-avatar.qbox.me/avatar/');

方法二:修改文件 /var/Typecho/Common.php

找到 gravatarUrl()代码块,如下所示

public static function gravatarUrl(    ?string $mail,    int $size,    ?string $rating = null,    ?string $default = null,    bool $isSecure = true): string {    if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {        $url = __TYPECHO_GRAVATAR_PREFIX__;    } else {        $url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';        $url .= '/avatar/';    }    if (!empty($mail)) {        $url .= md5(strtolower(trim($mail)));    }    $url .= '?s=' . $size;    if (isset($rating)) {        $url .= '&r=' . $rating;    }    if (isset($default)) {        $url .= '&d=' . $default;    }    return $url;}

修改头像源部分,将下面的

$url = $isSecure ? 'https://secure.gravatar.com' : 'http://www.gravatar.com';$url .= '/avatar/';

替换成推荐的源地址及镜像文件夹,如:

$url = $isSecure ? 'https://cravatar.cn' : 'https://cdn.helingqi.com';  //镜像源$url .= '/avatar/'; //(镜像源文件夹)

二、通过 QQ 邮箱,自动调用 QQ 头像

Gravatar 头像是需要注册的,如果我们没有注册,那只能使用他指定的默认头像,这就有点遗憾了,于是可以想想其他方法,比如 QQ 头像就有 api 接口可供调用。

1.有关接口

1) QQ 头像 API 接口

QQ 头像 API 接口地址示例1:http://q1.qlogo.cn/g?b=qq&nk=10000&s=100

QQ 头像 API 接口地址示例2 http://q2.qlogo.cn/headimg_dl?dst_uin=10000&spec=5

参数说明:

参数描述
bqq(固定参数)
nk/dst_uinQQ号
s头像尺寸(详情见下表)

头像大小说明:

s/spce尺寸
140 × 40
240 × 40
3100 × 100
4140 × 140
5640 × 640
4040 × 40
100100 × 100

2) QQ 昵称 API 接口(暂时用不上,写出来备查)

https://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=10000

这是QQ空间的一个Api接口(JSONP格式),该接口可以返回如下内容

portraitCallBack({"149740947":["http://qloGo4.store.qq.com/qzone/149740947/149740947/100",23,-1,0,0,0,"Hyer",0]})

其中的http://qlogo4.store.qq.com/qzone/149740947/149740947/100是 QQ 空间头像(无权访问),Hyer就是 QQ 昵称.

2. 修改文件 /var/Typecho/Common.php

typecho调用评论头像函数是 /var/typecho/Common.php 下面的 gravatarUrl() 函数,替换成下面的函数即可:

public static function gravatarUrl(    ?string $mail,    int $size,    ?string $rating = null,    ?string $default = null,    bool $isSecure = false): string {        $reg = "/^\d{5,11}@[qQ][Qq]\.(com)$/";    if (preg_match($reg, $mail)) {        $img    = explode("@", $mail);        $url = "//q2.qlogo.cn/headimg_dl?dst_uin={$img[0]}&spec={$size}";    } else {        if (defined('__TYPECHO_GRAVATAR_PREFIX__')) {            $url = __TYPECHO_GRAVATAR_PREFIX__;        } else {            $url = $isSecure ? 'https://cravatar.cn' : 'https://cdn.helingqi.com';  //镜像源            $url .= '/avatar/'; //(镜像源文件夹)        }        if (!empty($mail)) {            $url .= md5(strtolower(trim($mail)));        }        $url .= '?s=' . $size;        if (isset($rating)) {            $url .= '&r=' . $rating;        }        if (isset($default)) {            $url .= '&d=' . $default;        }    }    return $url;}

三、显示用户的头字母

如果既没有注册 Gravatar 头像,又没有留 QQ 邮箱,那又将使用他指定的默认头像了,于是又有人想出了使用用户头字母来作为图像的办法,并留下了 function ,我们只要对代码稍作修改即可。

1.修改主题文件夹下的 function.php 文件,在最后添加一个下面的两个函数

function letter_avatar($text){    $total = unpack('L', hash('adler32', $text, true))[1];    $hue = $total % 360;    list($r, $g, $b) = hsv2rgb($hue / 360, 0.3, 0.9);    $bg = "rgb({$r},{$g},{$b})";    $color = "#ffffff";    $first = mb_strtoupper(mb_substr($text, 0, 1));    $src = base64_encode('. $bg . '" x="0" y="0" width="100" height="100">. $color . '" text-anchor="middle" text-rights="admin" alignment-baseline="central">' . $first . '');    return 'data:image/svg+xml;base64,' . $src;}function hsv2rgb($h, $s, $v){    $r = $g = $b = 0;    $i = floor($h * 6);    $f = $h * 6 - $i;    $p = $v * (1 - $s);    $q = $v * (1 - $f * $s);    $t = $v * (1 - (1 - $f) * $s);    switch ($i % 6) {        case 0:            $r = $v;            $g = $t;            $b = $p;            break;        case 1:            $r = $q;            $g = $v;            $b = $p;            break;        case 2:            $r = $p;            $g = $v;            $b = $t;            break;        case 3:            $r = $p;            $g = $q;            $b = $v;            break;        case 4:            $r = $t;            $g = $p;            $b = $v;            break;        case 5:            $r = $v;            $g = $p;            $b = $q;            break;    }    return [        floor($r * 255),        floor($g * 255),        floor($b * 255)    ];}

调用该函数的语句就是 ,但我们需要根据需要才调用对应的图像,那就还要又实现的思路。

2. 将原调用语句 gravatar('40', ''); ?>修改成如下语句,并设置好样式

<!-- 如果没有注册gavatar图像,也没有qq邮箱,则显示首字母图像像 --><div class="avatar-bg" style="background-image:url($comments->author); ?> ">    <?php $comments->gravatar('40', 'blank'); ?></div>

样式代码

.avatar {  border-radius: 50%;  display: block;  margin: auto;}.avatar-bg {  border-radius: 50%;  display: block;  margin: auto;  background-size: cover;  width: 40px;  height: 40px;}

分析:

    1. 增加了一个上级div,其大小设置为与avatar图像大小相同,并在该div中调用首字母图像作为背景;
    1. 修改了gravatar('40', '')函数,增加了一个 blank 参数。增加这个参数后,则在只有默认 avatar 头像的情况下,该图像会变为透明,从而让背景的图片显示出来。

来源地址:https://blog.csdn.net/ymz641/article/details/130178016

--结束END--

本文标题: typecho 调用 Gravatar 头像的几种思路

本文链接: https://www.lsjlt.com/news/391506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • typecho 调用 Gravatar 头像的几种思路
    Gravatar(英语:Globally Recognized Avatar)是一项用于提供在全球范围内使用的头像服务。只要你在 Gravatar 的服务器上上传了你自己的头像,你便可以在其他任何...
    99+
    2023-09-02
    php typecho Gravatar
  • C#调用USB摄像头的方法
    C#调用USB摄像头使用AForge类库进行开发,供大家参考,具体内容如下 1、AForge安装 右击工程,在管理NuGet程序包中搜索Aforge类库,选择安装,如下图所示 2...
    99+
    2024-04-02
  • yolov5调用usb摄像头及本地摄像头的方法实例
    目录yolov5调用usb摄像头YOLOv5调用本地摄像头总结yolov5 调用 usb 摄像头 文章是在yolov5 v5.0版本的detect.py所修改编写 其他v1.0-v4...
    99+
    2024-04-02
  • Python调用shell的几种方式
    1.cmd = "some unix command" retcode = subprocess.call(cmd,shell=True)2.ssh = paramiko.SSHClient() ssh.connect(server, us...
    99+
    2023-01-31
    几种 方式 Python
  • 摄像头的调用和视频识别
    CV_tutorial3 摄像头调用+实时播放+保存视频 运动目标识别帧差法背景减除法 摄像头调用 创建视频捕捉对象:cv2.VideoCapture() 参数为视频设备的索引号,就一个摄像投的话写0默认; 或者是指定要...
    99+
    2023-08-30
    opencv 计算机视觉 视频
  • Android调用手机摄像头的方法
    本文实例为大家分享了Android调用手机摄像头的具体代码,供大家参考,具体内容如下 根据<第一行代码>进行改写: 布局文件,只有一个按钮,和一个Imageview,im...
    99+
    2024-04-02
  • Android调用外置摄像头的方法
    本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下 1、布局文件 <xml version="1.0" encoding="utf-8">...
    99+
    2024-04-02
  • Flutter实现点击头像更新头像的功能,本地相册选取和调用相机两种方式的实现
    文章目录 需求实现的效果如图代码实现代码分析用InkWell包住了我们的头像,这样来监听点击头像的事件用showDialog弹出提示框让用户选择是从相册里选择头像还是使用相机来拍照用image_picker实现从设备的相册或相机中选...
    99+
    2023-08-16
    flutter 头像 image_picker 相册 相机 app Android
  • Python调用摄像头的方法是什么
    Python调用摄像头的方法可以使用OpenCV库中的VideoCapture类。以下是一个简单的示例代码:```pythonimp...
    99+
    2023-08-18
    Python
  • JavaScript调用C语言的几种方式
    目录一、使用WebAssembly可以在JavaScript中调用C语言接口二、使用node-ffi和node-ffi-napi等第三方库可以在Node.js中调用C语言库JavaS...
    99+
    2023-02-17
    JavaScript调用C语言
  • Python调用剪切板的几种方法
    最近在网上搜索Python调用剪切板的方法,得到比较多的说法是调用ctypes包中自带的函数get_clipboard和set_clipboard函数,可是但我动手实现时却发现根本没有这两个函数,于是我觉得自己写一篇文字讲述Python的剪...
    99+
    2023-09-04
    python pandas 开发语言
  • Python调用API接口的几种方式
    Python调用API接口的几种方式主要有以下几种:1. 使用标准库:Python标准库中的urllib和urllib2模块可以用来...
    99+
    2023-09-02
    Python
  • 云服务器调用本地摄像头怎么调出来的
    如果您的云服务器上没有安装任何监控摄像头软件,您可以尝试以下几种方法调出相机: 重启摄像头:重新启动云服务以清除所有软件设置和网络设置,然后重启您的摄像头。 检查网络连接:检查您的网络连接是否正常,并尝试重新加入云服务器。 检查应用程序...
    99+
    2023-10-26
    摄像头 服务器
  • 说说Java异步调用的几种方式
    目录一、通过创建新线程二、通过线程池三、通过@Async注解四、通过CompletableFuture日常开发中,会经常遇到说,前台调服务,然后触发一个比较耗时的异步服务,且不用等异...
    99+
    2024-04-02
  • java方法调用的方式有哪几种
    在Java中,方法调用的方式主要有以下几种: 直接调用:直接在代码中使用方法名和参数调用方法。 通过对象调用:通过对象名调用对象的...
    99+
    2024-03-11
    java
  • 基于Docker的几种常用CentOS7镜像小结
    目录1 安装 Docker2 配置国内镜像源3 制作中文环境基础版Centos7镜像3.1 Dockerfile3.2 启动容器3.3 在容器中安装配置一些基础服务3.4 SSH3....
    99+
    2024-04-02
  • 云服务器调用本地摄像头怎么调回来的
    如果您要调用云服务器上的摄像头,通常需要先从本地摄像头中找到要回调到云服务器的图像,然后回调到云服务器进行保存。具体步骤如下: 打开终端并登录云服务器。 在摄像头界面中,单击“摄像头控制”选项。 在弹出的图像设置窗口中,点击“保存”按钮...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地摄像头怎么调回来的呢
    如果云服务器调用本地摄像头的操作是由于本地存储空间不足或者网络延迟等原因导致的,可以尝试以下解决方法: 检查云存储是否有足够的存储空间,可以尝试清空云服务器的存储空间,或者使用其他备份方式。 如果本地摄像头有多种格式,可以尝试使用不同的...
    99+
    2023-10-27
    摄像头 服务器
  • 云服务器怎么调用摄像头模式的
    要使用云服务器来调用摄像头模式的方法如下: 打开摄像头模式:在命令行中使用Python命令openssl打开摄像头模式。可以选择以不同的方式进行调用。 编写代码:打开云服务器,并在其中添加代码。在代码中,可以设置摄像头模式的启动方式,以...
    99+
    2023-10-26
    摄像头 模式 服务器
  • 云服务器怎么调用摄像头监控系统的录像
    要使用云服务器来调用摄像头监控系统的录像,您需要先安装相应的软件,例如 Velocity、CameraStudio、SupernProg等,它们是用于 Web 摄像头监控系统的软件。具体的步骤如下: 在 Web 上下载安装 Camera...
    99+
    2023-10-26
    监控系统 摄像头 录像
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作