Asp.net生成二维码代码并给二维码加背景图片(Asp.net给图片加文字、图片水印、图片合并)
本文讲解asp.net中如何添加生成二维码,及将生成后的二维码添加一个背景图片,生成二维码采用的是第三方类库(ThoughtWorks.QRCode.dll点击下载类库),生成完成后通过加水印的方法将两张图片合并,已达到给二维码加背景的效果。
准备的背景图片,最终代码输出效果:
代码如下:
/// <summary> /// 生成银联二维码带背景 /// </summary> /// <param name="Content">生成链接地址</param> /// <param name="path">背景图片地址</param> /// <param name="name">商户名</param> /// <param name="nameNum">商户编码</param> /// <returns></returns> public static string GetQrCodeImg(string Content, string path, string name, string nameNum) { //生成二维码 string filename = string.Empty; string filepath = string.Empty; string txt_qr = Content; string qrEncoding = "Byte"; string Level = "M"; string txt_ver = "0"; string txt_size = "23"; try { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); String encoding = qrEncoding; if (encoding == "Byte") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; } else if (encoding == "AlphaNumeric") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC; } else if (encoding == "Numeric") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC; } int scale = Convert.ToInt16(txt_size); qrCodeEncoder.QRCodeScale = scale; int version = Convert.ToInt16(txt_ver); qrCodeEncoder.QRCodeVersion = version; string errorCorrect = Level; if (errorCorrect == "L") qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; else if (errorCorrect == "M") qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; else if (errorCorrect == "Q") qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q; else if (errorCorrect == "H") qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H; Image qrCodeImg; String data = txt_qr; //生成支付二维码 qrCodeImg = qrCodeEncoder.Encode(data); //包装二维码,添加背景 string kz_name = Path.GetExtension(path); if (kz_name == ".jpg" || kz_name == ".bmp" || kz_name == ".jpeg" || kz_name == ".png") { DateTime time = DateTime.Now; filename = "" + time.Year.ToString() + time.Month.ToString() + time.Day.ToString() + time.Hour.ToString() + time.Minute.ToString() + time.Second.ToString() + time.Millisecond.ToString(); Image img = Bitmap.FromFile(path); Graphics g = Graphics.FromImage(img); //将二维码图片添加到背景上面 g.DrawImage(qrCodeImg, new Rectangle(269, 530, qrCodeImg.Width, qrCodeImg.Height)); //添加商户名称到背景 Font font = new Font("微软雅黑", 50); Color color = ColorTranslator.FromHtml("#124f9f"); Brush br = new SolidBrush(color); //根据每个字宽度处理左侧开始位置 int startLoc = (1299 - (name.Length * 68)) / 2; g.DrawString(name, font, br, startLoc, 370); //添加商户编号到背景 Font fontNo = new Font("微软雅黑", 35); startLoc = (1299 - (nameNum.Length * 23)) / 2; g.DrawString(nameNum, fontNo, br, startLoc, 1320); qrCodeImg.Dispose(); g.Dispose(); filename = ClassesLib.GetIdByTime() + ".jpg"; filepath = HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"] + "uploadFile//QRImg//"; if (!Directory.Exists(filepath)) Directory.CreateDirectory(filepath); img.Save(filepath + filename); img.Dispose(); } return "uploadFile/QRImg" + "/" + filename; ; } catch (Exception ex) { return ""; } }
猜您可能还喜欢
- 完美解决iis下JWplayer提示Error loading media: File could not be played错误(3706)
- asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(2930)
- .Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(2637)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2577)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2541)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2191)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2158)
- Jquery ajax访问asp.net web api跨域问题解决方案(1829)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(五)后台模板html页面集成到项目中(1609)
- .Net Mvc中使用Jquery EasyUI控件讲解(二)树形控件tree使用介绍(1536)
评论列表
发表评论
文章分类
文章归档
阅读排行
- 1. Windows Server 2008 R2永久激活及Chew-WGA v0.9下载(12644)
- 2.Visual Studio 2017中安装visualSVN及使用详解(4838)
- 3.完美解决iis下JWplayer提示Error loading media: File could not be played错误(3706)
- 4.asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(2930)
- 5.Android avax.net.ssl.SSLPeerUnverifiedException: No peer certificate 解决方法(httpClient支持HTTPS的访问方式)(2792)
- 6..Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(2637)
- 7.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2577)
- 8.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2541)
- 9. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2191)
- 10.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2158)