C#生成Bar Code Image
public class Barcode : IHttpHandler { private object _code = ""; private int _height = 52; private string code = ""; public void ProcessRequest(HttpContext context) { if (context.Request.QueryString["code"] != null) { _code = context.Request.QueryString["code"].ToString(); _code = "*" + _code + "*"; } code = bar_code(_code); int p_w = code.Length; //int p_h = _height + 20; int p_h = _height; context.Response.ContentType = "image/gif"; Bitmap myBitmap = new Bitmap(p_w, p_h); Graphics myGrap = Graphics.FromImage(myBitmap); myGrap.Clear(Color.White); for (int i = 0; i < p_w; i++) { Pen myPen = new Pen(Color.White, 1); if (code.Substring(i, 1) == "|") { myPen.Color = Color.Black; } myGrap.DrawLine(myPen, i, 0, i, _height); } //myGrap.DrawString(_code.ToString(), new Font("Courier New", 10), new SolidBrush(Color.Black), -4, _height); myBitmap.Save(context.Response.OutputStream, ImageFormat.Gif); context.Response.End(); } public string bar_code(object str) { string strTmp = str.ToString(); string code = strTmp; strTmp = strTmp.ToLower(); strTmp = strTmp.Replace("0", "_|_|__||_||_|"); strTmp = strTmp.Replace("1", "_||_|__|_|_||"); strTmp = strTmp.Replace("2", "_|_||__|_|_||"); strTmp = strTmp.Replace("3", "_||_||__|_|_|"); strTmp = strTmp.Replace("4", "_|_|__||_|_||"); strTmp = strTmp.Replace("5", "_||_|__||_|_|"); strTmp = strTmp.Replace("7", "_|_|__|_||_||"); strTmp = strTmp.Replace("6", "_|_||__||_|_|"); strTmp = strTmp.Replace("8", "_||_|__|_||_|"); strTmp = strTmp.Replace("9", "_|_||__|_||_|"); strTmp = strTmp.Replace("a", "_||_|_|__|_||"); strTmp = strTmp.Replace("b", "_|_||_|__|_||"); strTmp = strTmp.Replace("c", "_||_||_|__|_|"); strTmp = strTmp.Replace("d", "_|_|_||__|_||"); strTmp = strTmp.Replace("e", "_||_|_||__|_|"); strTmp = strTmp.Replace("f", "_|_||_||__|_|"); strTmp = strTmp.Replace("g", "_|_|_|__||_||"); strTmp = strTmp.Replace("h", "_||_|_|__||_|"); strTmp = strTmp.Replace("i", "_|_||_|__||_|"); strTmp = strTmp.Replace("j", "_|_|_||__||_|"); strTmp = strTmp.Replace("k", "_||_|_|_|__||"); strTmp = strTmp.Replace("l", "_|_||_|_|__||"); strTmp = strTmp.Replace("m", "_||_||_|_|__|"); strTmp = strTmp.Replace("n", "_|_|_||_|__||"); strTmp = strTmp.Replace("o", "_||_|_||_|__|"); strTmp = strTmp.Replace("p", "_|_||_||_|__|"); strTmp = strTmp.Replace("r", "_||_|_|_||__|"); strTmp = strTmp.Replace("q", "_|_|_|_||__||"); strTmp = strTmp.Replace("s", "_|_||_|_||__|"); strTmp = strTmp.Replace("t", "_|_|_||_||__|"); strTmp = strTmp.Replace("u", "_||__|_|_|_||"); strTmp = strTmp.Replace("v", "_|__||_|_|_||"); strTmp = strTmp.Replace("w", "_||__||_|_|_|"); strTmp = strTmp.Replace("x", "_|__|_||_|_||"); strTmp = strTmp.Replace("y", "_||__|_||_|_|"); strTmp = strTmp.Replace("z", "_|__||_||_|_|"); strTmp = strTmp.Replace("-", "_|__|_|_||_||"); strTmp = strTmp.Replace("*", "_|__|_||_||_|"); strTmp = strTmp.Replace("/", "_|__|__|_|__|"); strTmp = strTmp.Replace("%", "_|_|__|__|__|"); strTmp = strTmp.Replace("+", "_|__|_|__|__|"); strTmp = strTmp.Replace(".", "_||__|_|_||_|"); return strTmp; } public bool IsReusable { get { return false; } } }