ChaosBlog一开始做的时候,头像是写死的靠上传来替换,但是由于完全静态,这样用起来相当不方便,所以还是用回gravatar的头像服务吧。

gravatar头像的地址

头像服务器/avatar/邮箱的md5值?s=头像尺寸&d=默认头像&r=头像等级

头像服务器

  • http://www.gravatar.com
  • http://0.gravatar.com
  • http://1.gravatar.com
  • http://2.gravatar.com
  • http://3.gravatar.com
  • http://s.gravatar.com
  • http://en.gravatar.com
  • https://secure.gravatar.com

据说在国内最稳定的是最后一个。

头像尺寸

可以选择1~512,即1~512px。

默认头像

默认头像这个参数我也没有试出来,但是据说是有这些可以选的:

  • 留空 显示gravatar官方图形
  • 404 直接返回404错误状态
  • mm 神秘人(一个灰白头像)
  • identicon 抽象几何图形
  • monsterid 小怪物
  • wavatar 用不同面孔和背景组合生成的头像
  • retro 八位像素复古头像

头像等级

最后一个就是限制级的问题了,自己用gravatar的时候都知道,头像上传以后会审核分级的。

  • g 适合任何年龄的访客查看,一般都用这个
  • pg 可能有争议的头像,只适合13岁以上读者查看
  • r 成人级,只适合17岁以上成人查看
  • x 最高等级,不适合大多数人查看

源代码

最后附上我的写的一个获取头像的类的吧,此类基于apache lisence开源,请尊重版权。

/** @author chao */
public class GravatarUtils {
	/**
	 * @param server
	 * @param email
	 * @param d
	 * - 留空 显示gravatar官方图形
	 * - 404 直接返回404错误状态
	 * - mm 神秘人(一个灰白头像)
	 * - identicon 抽象几何图形
	 * - monsterid 小怪物
	 * - wavatar 用不同面孔和背景组合生成的头像
	 * - retro 八位像素复古头像
	 * @param size (1~512)
	 * @param rate (g, pg, r, x) 默认g
	 */
	public static String getAvatar(String server, String email, String size, String d, String rate){
		StringBuilder sb = new StringBuilder(server).append("/avatar/");
		sb.append(Md5Utils.getMD5(email.toLowerCase()));
		sb.append("?s=").append(size);
		if(d!=null && d.length()!=0){
			sb.append("&d=").append(d);
		}
		if(rate!=null && rate.length()!=0){
			sb.append("&r=").append(rate);
		}
		return sb.toString();
	}
	
	public static String getAvatar(String server, String email, String size){
		return getAvatar(server, email, size, "", "");
	}
}