一.简介
我们在之前进行评论的时候,会发现这个评论后会显示这个头像,但是我们这个用户并没有设置头像,那么这个头像是来自哪里的?在这个后台,我们使用了Gravatar来生成头像。
Gravatar是一个全球通用的头像。你只需上传一次并创建自己的个人资料,然后当你加入任何支持Gravatar的网站时,你的Gravatar图片会自动显示。
二.使用方法
gravatar依赖邮箱生成的哈希值作为图片地址的一部分,所以需要把邮箱地址哈希化。但是我们在博客项目中不这样处理邮箱地址,我们选择的是对邮箱地址进行MD5加密。
/**获得MD5 加密
* str 原字符串
*/
public static String strToMd5(String str)
{
String md5Str=null;
if(str!=null && str.length()!=0){
try{
MessageDigest md=MessageDigest.getInstance("MD5");
md.update(str.getBytes());
byte b[]=md.digest();
int i;
StringBuffer buf=new StringBuffer("");
for(int offset=0;offset<b.length;offset++){
i=b[offset];
if(i<0)
{
i+=265;
}
if(i<16){
buf.append("0");
}
buf.append(Integer.toHexString(i));
}
//32位
md5Str=buf.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
return md5Str;
}
//根据email获取gravatar头像
public static String getGravatar(String email){
String emailMd5=strToMd5(email);
//设置图片大小32px
String avatar = "http://cn.gravatar.com/avatar/" + emailMd5 + "?s=128&d=identicon&r=PG";
return avatar;
}
上面带的参数s是指图片的大小。
显示头像的情况:
- 一种是已经在gravatar网站上添加过对应邮箱的头像,访问这个url的时候则直接显示设置的图片。
- 没有添加过邮箱的头像,访问这个url时会显示默认的图片G
- 如果没有给邮箱添加过头像,但是不想要默认的图片G,可以添加参数
d=identicon
,则可以随机生成头像,但是生成之后就不会再变了