Gravatar控件是如何炼成的?
上回说了,Gravatar就是Globally Recognized Avatar的缩写,是 http://www.gravatar.com 推出的一项服务,意为“全球通用头像”。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。
并且也提供了一个Gravatar Control,但是可能会有许多的人不喜欢用别人写的控件,在这里在写一个简单的也是最主要的Code:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- namespace Gravatar_Code
- {
- public partial class _Default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- }
- protected void Button1_Click(object sender, EventArgs e)
- {
- this.Image2.ImageUrl=Gravatar(this.TextBox1.Text.Trim(),80,"x","http://www.jsann.com/image/gravatar/default.jpg","gravatar","gravatar",true);
- }
- /// <summary>
- /// Get Gravatar Photo
- /// </summary>
- /// <param name="emailAddress">Email Address</param>
- /// <param name="imageSize">Image Size</param>
- /// <param name="distinction">Bast Distinction</param>
- /// <param name="defaultImage">Default Image URL</param>
- /// <param name="altText">Image Alt Text</param>
- /// <param name="toolTip">Tool Tip Text</param>
- /// <param name="isURL">For Image Label Or The Image Label URL</param>
- /// <returns>The Gravatar Image Or URL</returns>
- protected string Gravatar(string emailAddress, int imageSize, string distinction, string defaultImage, string altText, string toolTip,bool isURL)
- {
- System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
- byte[] result = md5.ComputeHash(System.Text.Encoding.ASCII.GetBytes(emailAddress));
- System.Text.StringBuilder hash = new System.Text.StringBuilder();
- for (int i = 0; i < result.Length; i++)
- {
- hash.Append(result[i].ToString("x2"));
- }
- System.Text.StringBuilder gravatarImage = new System.Text.StringBuilder();
- if (!isURL)
- {
- gravatarImage.Append("<img src=\"");
- }
- gravatarImage.Append("http://www.gravatar.com/avatar.php?");
- gravatarImage.Append("gravatar_id=" + hash.ToString());
- gravatarImage.Append("&rating=" + distinction);
- gravatarImage.Append("&size=" + imageSize);
- gravatarImage.Append("&default=" + Server.UrlEncode(defaultImage));
- if (!isURL)
- {
- gravatarImage.Append("\" alt=\"" + altText);
- gravatarImage.Append("\" title=\"" + toolTip);
- gravatarImage.Append("\" />");
- }
- return gravatarImage.ToString();
- }
- }
- }
其实最主要的代码就是最后一个有注释的方法,很简单,将所提供的Email MD5一下,然后以x2的格式ToString(也就是十六进制的队组格式)就可以了。
测试代码如下:
- <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Gravatar_Code._Default" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>Gravatar Code</title>
- <style type="text/css" runat="server">
- div
- {
- margin:10px;
- }
- #TextBox1
- {
- border:#CCC solid 1px;
- width:380px;
- }
- #Button1
- {
- border:#CCC solid 1px;
- background-color:#FFF;
- width:380px;
- color:#999;
- }
- </style>
- </head>
- <body>
- <form id="form1" runat="server">
- <div>
- <%=Gravatar("zenwink@gmail.com", 80,"G","http://www.jsann.com/image/gravatar/default.jpg","Gravatar Image","Get Your Gravatar Images",false)%>
- </div>
- <div>
- <asp:Image ID="Image1" runat="server"
- ImageUrl="http://www.jsann.com/image/gravatar/default.jpg" />
- </div>
- <div>
- <asp:TextBox ID="TextBox1" runat="server" Text="zenwink@vip.qq.com"></asp:TextBox>
- </div>
- <div>
- <asp:Button ID="Button1" runat="server"
- Text="Submit The Email Address And Get The Gravatar Hand Image"
- onclick="Button1_Click" />
- </div>
- <div>
- <asp:Image ID="Image2" runat="server" />
- </div>
- </form>
- </body>
- </html>
还是提供个截图,汗,木的办法(同样的,你还是可以在这里下载到源码)。
本文作者:季氏安安([既是安安]博客采用 BY-NC-SA 协议进行授权. 转载请保留此链接,谢谢。)
原文链接:http://www.jsann.com/post/gravatar_control_code_for_apsdotnet.html



1 条留言
我要留言我叫小井 | 2012-2-16 16:00:50
[Reply]