返回顶部
首页 > 资讯 > 后端开发 > 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://lsjlt.com/news/391506.html(转载时请注明来源链接)

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

猜你喜欢
  • 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
  • Android调用手机摄像头的方法
    本文实例为大家分享了Android调用手机摄像头的具体代码,供大家参考,具体内容如下 根据<第一行代码>进行改写: 布局文件,只有一个按钮,和一个Imageview,im...
    99+
    2024-04-02
  • Android调用外置摄像头的方法
    本文实例为大家分享了Android调用外置摄像头的具体代码,供大家参考,具体内容如下 1、布局文件 <xml version="1.0" encoding="utf-8">...
    99+
    2024-04-02
  • 摄像头的调用和视频识别
    CV_tutorial3 摄像头调用+实时播放+保存视频 运动目标识别帧差法背景减除法 摄像头调用 创建视频捕捉对象:cv2.VideoCapture() 参数为视频设备的索引号,就一个摄像投的话写0默认; 或者是指定要...
    99+
    2023-08-30
    opencv 计算机视觉 视频
  • android实现支付宝咻一咻的几种思路方法
    支付宝咻一咻在过年的时候很火热。那么咻一咻具体有哪些实现方式呢?下面我们将一一介绍这几种思路的实现过程。 1.自定义View实现咻一咻 那么这种实现方法需要掌握Canvas以...
    99+
    2022-06-06
    方法 咻一咻 支付宝 Android
  • Python调用摄像头的方法是什么
    Python调用摄像头的方法可以使用OpenCV库中的VideoCapture类。以下是一个简单的示例代码:```pythonimp...
    99+
    2023-08-18
    Python
  • 利用python调用摄像头的实例分析
    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一、打开摄像头 import cv2 import numpy as np def video...
    99+
    2022-06-02
    python 调用摄像头
  • Flutter实现点击头像更新头像的功能,本地相册选取和调用相机两种方式的实现
    文章目录 需求实现的效果如图代码实现代码分析用InkWell包住了我们的头像,这样来监听点击头像的事件用showDialog弹出提示框让用户选择是从相册里选择头像还是使用相机来拍照用image_picker实现从设备的相册或相机中选...
    99+
    2023-08-16
    flutter 头像 image_picker 相册 相机 app Android
  • Python调用API接口的几种方式
    Python调用API接口的几种方式主要有以下几种:1. 使用标准库:Python标准库中的urllib和urllib2模块可以用来...
    99+
    2023-09-02
    Python
  • Python调用剪切板的几种方法
    最近在网上搜索Python调用剪切板的方法,得到比较多的说法是调用ctypes包中自带的函数get_clipboard和set_clipboard函数,可是但我动手实现时却发现根本没有这两个函数,于是我觉得自己写一篇文字讲述Python的剪...
    99+
    2023-09-04
    python pandas 开发语言
  • JavaScript调用C语言的几种方式
    目录一、使用WebAssembly可以在JavaScript中调用C语言接口二、使用node-ffi和node-ffi-napi等第三方库可以在Node.js中调用C语言库JavaS...
    99+
    2023-02-17
    JavaScript调用C语言
  • 云服务器调用本地摄像头怎么调回来的
    如果您要调用云服务器上的摄像头,通常需要先从本地摄像头中找到要回调到云服务器的图像,然后回调到云服务器进行保存。具体步骤如下: 打开终端并登录云服务器。 在摄像头界面中,单击“摄像头控制”选项。 在弹出的图像设置窗口中,点击“保存”按钮...
    99+
    2023-10-26
    摄像头 服务器
  • 云服务器调用本地摄像头怎么调出来的
    如果您的云服务器上没有安装任何监控摄像头软件,您可以尝试以下几种方法调出相机: 重启摄像头:重新启动云服务以清除所有软件设置和网络设置,然后重启您的摄像头。 检查网络连接:检查您的网络连接是否正常,并尝试重新加入云服务器。 检查应用程序...
    99+
    2023-10-26
    摄像头 服务器
  • 基于Docker的几种常用CentOS7镜像小结
    目录1 安装 Docker2 配置国内镜像源3 制作中文环境基础版Centos7镜像3.1 Dockerfile3.2 启动容器3.3 在容器中安装配置一些基础服务3.4 SSH3....
    99+
    2024-04-02
  • Android 开发延时调用的几种方法
      我们在安卓开发中,有时候会遇到需要一个程序推迟一段时间执行,也就是延时执行,比如说App首页显示定格3秒,然后自动跳到登录页的情况,这个怎么做呢?本文参...
    99+
    2022-06-06
    调用 方法 Android
  • 说说Java异步调用的几种方式
    目录一、通过创建新线程二、通过线程池三、通过@Async注解四、通过CompletableFuture日常开发中,会经常遇到说,前台调服务,然后触发一个比较耗时的异步服务,且不用等异...
    99+
    2024-04-02
  • java方法调用的方式有哪几种
    在Java中,方法调用的方式主要有以下几种: 直接调用:直接在代码中使用方法名和参数调用方法。 通过对象调用:通过对象名调用对象的...
    99+
    2024-03-11
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作