既是安安

蝴蝶飞不过沧海,谁忍心责怪?

{既是安安}

Gravatar控件是如何炼成的?

上回说了,Gravatar就是Globally Recognized Avatar的缩写,是 http://www.gravatar.com 推出的一项服务,意为“全球通用头像”。如果在Gravatar的服务器上放置了你自己的头像,那么在任何支持Gravatar的blog或者留言本上留言时,只要提供你与这个头像关联的email地址,就能够显示出你的Gravatar头像来。

并且也提供了一个Gravatar Control,但是可能会有许多的人不喜欢用别人写的控件,在这里在写一个简单的也是最主要的Code:

 
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. using System.Web.UI;
  6. using System.Web.UI.WebControls;
  7.  
  8. namespace Gravatar_Code
  9. {
  10.     public partial class _Default : System.Web.UI.Page
  11.     {
  12.         protected void Page_Load(object sender, EventArgs e)
  13.         {
  14.  
  15.         }
  16.  
  17.         protected void Button1_Click(object sender, EventArgs e)
  18.         {
  19.             this.Image2.ImageUrl=Gravatar(this.TextBox1.Text.Trim(),80,"x","http://www.jsann.com/image/gravatar/default.jpg","gravatar","gravatar",true);
  20.         }
  21.  
  22.         /// <summary>
  23.         /// Get Gravatar Photo
  24.         /// </summary>
  25.         /// <param name="emailAddress">Email Address</param>
  26.         /// <param name="imageSize">Image Size</param>
  27.         /// <param name="distinction">Bast Distinction</param>
  28.         /// <param name="defaultImage">Default Image URL</param>
  29.         /// <param name="altText">Image Alt Text</param>
  30.         /// <param name="toolTip">Tool Tip Text</param>
  31.         /// <param name="isURL">For Image Label Or The Image Label URL</param>
  32.         /// <returns>The Gravatar Image Or URL</returns>
  33.         protected string Gravatar(string emailAddress, int imageSize, string distinction, string defaultImage, string altText, string toolTip,bool isURL)
  34.         {
  35.             System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
  36.             byte[] result = md5.ComputeHash(System.Text.Encoding.ASCII.GetBytes(emailAddress));
  37.             System.Text.StringBuilder hash = new System.Text.StringBuilder();
  38.             for (int i = 0; i < result.Length; i++)
  39.             {
  40.                 hash.Append(result[i].ToString("x2"));
  41.             }
  42.             System.Text.StringBuilder gravatarImage = new System.Text.StringBuilder();
  43.             if (!isURL)
  44.             {
  45.                 gravatarImage.Append("<img src=\"");
  46.             }
  47.             gravatarImage.Append("http://www.gravatar.com/avatar.php?");
  48.             gravatarImage.Append("gravatar_id=" + hash.ToString());
  49.             gravatarImage.Append("&amp;rating=" + distinction);
  50.             gravatarImage.Append("&amp;size=" + imageSize);
  51.             gravatarImage.Append("&amp;default=" + Server.UrlEncode(defaultImage));
  52.             if (!isURL)
  53.             {
  54.                 gravatarImage.Append("\" alt=\"" + altText);
  55.                 gravatarImage.Append("\" title=\"" + toolTip);
  56.                 gravatarImage.Append("\" />");
  57.             }
  58.             return gravatarImage.ToString();
  59.         }
  60.     }
  61. }

其实最主要的代码就是最后一个有注释的方法,很简单,将所提供的Email MD5一下,然后以x2的格式ToString(也就是十六进制的队组格式)就可以了。

测试代码如下:

 
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Gravatar_Code._Default" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml" >
  6. <head runat="server">
  7.     <title>Gravatar Code</title>
  8.     <style type="text/css" runat="server">
  9.     div
  10.     {
  11.         margin:10px;
  12.     }
  13.     #TextBox1
  14.     {
  15.         border:#CCC solid 1px;
  16.         width:380px;
  17.     }
  18.     #Button1
  19.     {
  20.         border:#CCC solid 1px;
  21.         background-color:#FFF;
  22.         width:380px;
  23.         color:#999;
  24.     }
  25.     </style>
  26. </head>
  27. <body>
  28.     <form id="form1" runat="server">
  29.     <div>
  30.         <%=Gravatar("zenwink@gmail.com"80,"G","http://www.jsann.com/image/gravatar/default.jpg","Gravatar Image","Get Your Gravatar Images",false)%>
  31.     </div>
  32.     <div>
  33.         <asp:Image ID="Image1" runat="server" 
  34.             ImageUrl="http://www.jsann.com/image/gravatar/default.jpg" />
  35.     </div>
  36.     <div>
  37.         <asp:TextBox ID="TextBox1" runat="server" Text="zenwink@vip.qq.com"></asp:TextBox>
  38.     </div>
  39.     <div>
  40.         <asp:Button ID="Button1" runat="server" 
  41.             Text="Submit The Email Address And Get The Gravatar Hand Image" 
  42.             onclick="Button1_Click" />
  43.     </div>
  44.     <div>
  45.         <asp:Image ID="Image2" runat="server" />
  46.     </div>
  47.     </form>
  48. </body>
  49. </html>

还是提供个截图,汗,木的办法(同样的,你还是可以在这里下载到源码)。

[既是安安]博客 季氏安安

本文作者:季氏安安[既是安安]博客采用 BY-NC-SA 协议进行授权. 转载请保留此链接,谢谢。)

原文链接:http://www.jsann.com/post/gravatar_control_code_for_apsdotnet.html

1 条留言

我要留言
  • 1F
    我叫小井 我叫小井

    我叫小井  |  2012-2-16 16:00:50

    赞一下,顺便看看我的头像,^_^

    [Reply]

(必填)
(必填,支持Gravatar)

RSS
  • 分类目录

  • 最近文章

  • 随机文章

  • 最近评论