需求:根據網址生成二維碼,然后再把二維碼生成到背景圖片上,然后顯示在網頁中
pic.ashx
<%@ WebHandler Language="C#" Class="pic" %> using System; using System.Web; using ThoughtWorks.QRCode.Codec; using System.IO; using System.Drawing; using System.Text; using System.Drawing.Imaging; public class GetHongbao : IHttpHandler { public void ProcessRequest (HttpContext context) { string iid = context.Request.QueryString["id"]; string url = "http://www.ceshi.com/tg" + iid; string bg = context.Server.MapPath("/images/hb.png"); Image imgNew = CombinImage(bg, url); MemoryStream ms = new MemoryStream(); imgNew.Save(ms, ImageFormat.Png); imgNew.Dispose(); context.Response.ClearContent(); context.Response.ContentType = "image/png"; context.Response.BinaryWrite(ms.ToArray()); context.Response.End(); } public Image CombinImage(string sourceImg,string url) { Image imgBack = Image.FromFile(sourceImg); //相框圖片 //從指定的System.Drawing.Image創建新的System.Drawing.Graphics Graphics g = Graphics.FromImage(imgBack); //g.DrawImage(imgBack, 0, 0, 148, 124); // g.DrawImage(imgBack, 0, 0, 相框寬, 相框高); //g.FillRectangle(System.Drawing.Brushes.Black, 16, 16, (int)112 + 2, ((int)73 + 2));//相片四周刷一層黑色邊框 g.DrawImage(GetQcode(url), 415, 798, 670, 670); GC.Collect(); return imgBack; } public Image GetQcode(string data) { //初始化二維碼生成工具 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//二維碼編碼(Byte、AlphaNumeric、Numeric) qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;//二維碼糾錯能力(L:7% M:15% Q:25% H:30%) qrCodeEncoder.QRCodeVersion = 0;//二維碼密集度0-40 qrCodeEncoder.QRCodeScale = 20;//二維碼尺寸(Version為0時,1:30x30,每加1寬和高各加29 return qrCodeEncoder.Encode(data, Encoding.Default); } public bool IsReusable { get { return false; } } }
//需要使用到二維碼ThoughtWorks.QRCode.dll
html調用
<img src="pic.ashx?id=1" />