<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs" Inherits="QRCode" %> <!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>生成二维码</title> </head> <body> <form id="form1" runat="server"> <div> 请输入内容:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <br/> <asp:Button ID="Button1" runat="server" Text="生成二维码" onclick="Button1_Click" /> </div> <div style="text-align:center"> <asp:Image ID="ImageCode" runat="server" Visible="false" /> </div> </form> </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class QRCode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { string CodeText = TextBox1.Text.Trim(); if (!string.IsNullOrEmpty(CodeText)) { ImageCode.Visible = true; ImageCode.ImageUrl = "GetQRCode.ashx?CodeText=" + CodeText; } } }
<%@ WebHandler Language="C#" Class="GetQRCode" %> using System; using System.Web; using ThoughtWorks.QRCode.Codec; using ThoughtWorks.QRCode.Codec.Data; using ThoughtWorks.QRCode.Codec.Util; using System.IO; using System.Text; public class GetQRCode : IHttpHandler { public void ProcessRequest (HttpContext context) { String data = context.Request["CodeText"]; if (!string.IsNullOrEmpty(data)) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrCodeEncoder.QRCodeScale = 4; qrCodeEncoder.QRCodeVersion = 8; qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; System.Drawing.Bitmap image = qrCodeEncoder.Encode(data); System.IO.MemoryStream MStream = new System.IO.MemoryStream(); image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png); context.Response.ClearContent(); context.Response.ContentType = "image/Png"; context.Response.BinaryWrite(MStream.ToArray()); } context.Response.Flush(); context.Response.End(); } public bool IsReusable { get { return false; } } }