Those of you who actually visit my blog rather than just consuming my RSS feed may have noticed my new header images. I couldn't decide which one to use, so I threw together a random image HttpHandler to serve up a random one for each request. There are several solutions for this available, but I thought my simplistic approach might be useful to someone else.
I just named the images header-XXXX.jpg, where XXXX is a 4 digit number and threw them into a directory, and then created an .ashx file with the following content:
<%@ WebHandler Class="HeaderRotator" Language="C#" %> using System;using System.IO; public class HeaderRotator : System.Web.IHttpHandler { static int _HighestHeader = 12; static Random _Rand = new Random(); #region IHttpHandler Members public bool IsReusable { get { return true; } } public void ProcessRequest(System.Web.HttpContext context) { int next = _Rand.Next(_HighestHeader + 1); context.Response.WriteFile(context.Server.MapPath(string.Format("~/headers/header-{0:0000}.jpg", next))); } #endregion}
<%@ WebHandler Class="HeaderRotator" Language="C#" %>
using System;using System.IO;
public class HeaderRotator : System.Web.IHttpHandler {
static int _HighestHeader = 12; static Random _Rand = new Random();
#region IHttpHandler Members
public bool IsReusable { get { return true; } }
public void ProcessRequest(System.Web.HttpContext context) { int next = _Rand.Next(_HighestHeader + 1); context.Response.WriteFile(context.Server.MapPath(string.Format("~/headers/header-{0:0000}.jpg", next))); }
#endregion}
And that's it. Then you just reference the .ashx file in the img tag and you get a random image every time. The _HighestHeader number needs to reflect the highest-numbered header image. There's lots of different ways to do that, but I felt that simplicity was important here.
I had a lot of fun creating the images. Some of them were carefully crafted, while others were more or less "happy accidents". I'm open to more suggestions for a good "tag-line".
[UPDATE] A few of you wanted a way to see them all without wasting time fighting against statistics. So, here's a link that will show them all.
Remember Me
Page rendered at Thursday, August 21, 2008 7:06:19 PM (Pacific Standard Time, UTC-08:00)
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in anyway.