Asp.net生成二维码代码并给二维码加背景图片(Asp.net给图片加文字、图片水印、图片合并)
本文讲解asp.net中如何添加生成二维码,及将生成后的二维码添加一个背景图片,生成二维码采用的是第三方类库(ThoughtWorks.QRCode.dll点击下载类库),生成完成后通过加水印的方法将两张图片合并,已达到给二维码加背景的效果。
准备的背景图片,最终代码输出效果:.png)
代码如下:
/// <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错误(4068)
- asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(3418)
- .Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(3015)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2906)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2904)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2515)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2488)
- Jquery ajax访问asp.net web api跨域问题解决方案(1931)
- asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(五)后台模板html页面集成到项目中(1706)
- .Net Mvc中使用Jquery EasyUI控件讲解(二)树形控件tree使用介绍(1660)
评论列表
发表评论
文章分类
文章归档
阅读排行
- 1. Windows Server 2008 R2永久激活及Chew-WGA v0.9下载(13315)
- 2.Visual Studio 2017中安装visualSVN及使用详解(5228)
- 3.完美解决iis下JWplayer提示Error loading media: File could not be played错误(4068)
- 4.asp.net mvc+jquery easyui开发基础(一)模块首页及增加、修改、删除模块实现(3418)
- 5.Android avax.net.ssl.SSLPeerUnverifiedException: No peer certificate 解决方法(httpClient支持HTTPS的访问方式)(3262)
- 6..Net Mvc中使用Jquery EasyUI控件讲解(一)表格控件datagrid使用介绍(3015)
- 7.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(三)登录模块开发(2906)
- 8.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(七)权限管理模块之系统菜单动态生成(2904)
- 9.asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(八)权限管理模块之权限管理实现(2515)
- 10. asp.net mvc+jquery easyui开发实战教程之网站后台管理系统开发(六)权限管理模块之初始数据准备(2488)
