<a title="生成二维码" href="javascript:;" onclick="CrCard('@item.pk_employee')" style="text-decoration:none"><i class="Hui-iconfont"></i></a>
function msg(src) {
//配置一个透明的询问框
layer.msg('<img src="'+src+'" >', {
time: 200000, //20s后自动关闭
btn: ['关闭']
});
}
//页面层
function open(src){
layer.open({
type: 1,
// offset: '100px',
title: "员工名片二维码",
skin: 'demo-class',
area: ['300px', '300px'], //宽高
content: '<div style="text-align:center"><img src="' + src + '" ></div>',
btn: '关闭'
});
}
function CrCard(id) {
$.post("/StaffManagement/EmployeeInfo/creQRcode?id=" + id, {},function (d) {
//msg(d);
open(d);
},'text')
}
using System.Drawing;
using System.Drawing.Imaging;
引用ThoughtWorks.QRCode.dll插件
public ActionResult creQRcode(string id)
{
var query = db.t_employeeInfo.Where(e => e.pk_employee == id).FirstOrDefault();
string name = query.name == "" ? "暂无" : query.name;
string tel =query.cellPhone== null ? "400 XXX 421" : query.cellPhone;
string TITLE = query.cellPhone == null ? "400 XXXX 421" : query.cellPhone;
string ORG =query.fk_unit== null ? "暂无" : query.fk_unit;
string ADR = "地址" ;
string URL = "http://www.XX.cn/";//个人主页
string EMAIL = query.email == null ? "邮箱" : query.email;
StringBuilder card = new StringBuilder();
card.Append("BEGIN:VCARD");
card.Append("\r\nFN:" + name);//姓名
card.Append("\r\nTEL;CELL:" + tel);//手机号
card.Append("\r\nTITLE:" + TITLE);//
card.Append("\r\nORG:" + ORG);
card.Append("\r\nTEL;WORK:" + "400-6690421");
card.Append("\r\nADR;WORK:" + ADR);
card.Append("\r\nURL:" + URL);
card.Append("\r\nEMAIL;WORK:" + EMAIL);
card.Append("\r\nEND:VCARD\r\n");
Bitmap bmp = GetCard(card.ToString(), string.Empty, 200, 200, "微软雅黑");
string path = "~/Upload/MyCard/";
string path2 = Request.MapPath(path);
if (!Directory.Exists(path2))
{
Directory.CreateDirectory(path2);
}
string guid = Guid.NewGuid().ToString();
string newPath = path2 + guid + ".jpg";
bmp.Save(newPath, ImageFormat.Jpeg);
string src = "/Upload/MyCard/" + guid + ".jpg";
return Content(src);
}
/// <summary>
/// 绘制二维码
/// </summary>
/// <param name="strSource"></param>
/// <param name="text"></param>
/// <param name="width"></param>
/// <param name="height"></param>
/// <param name="fontName"></param>
/// <returns></returns>
public static Bitmap GetCard(string strSource,string text,int width,int height,string fontName)
{
//创建Bitmap对象
Bitmap bmp = new Bitmap(width,height);
//从image创建Graphics对象
Graphics objgraphics = Graphics.FromImage(bmp);
//填上背景色
objgraphics.FillRectangle(Brushes.White, 0, 0, bmp.Width, bmp.Height);
ThoughtWorks.QRCode.Codec.QRCodeEncoder qRCodeEncoder = new ThoughtWorks.QRCode.Codec.QRCodeEncoder();
//设置编码方法
qRCodeEncoder.QRCodeEncodeMode= ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE;
//设置大小
qRCodeEncoder.QRCodeScale = 3;
// 适用于信息量较少的情形,图像越小保存的信息量越少
// qrCodeEncoder.QRCodeScale = 4;
// 设置版本
qRCodeEncoder.QRCodeVersion = 0;
// 设置错误校验的级别,正因为二维码有纠错能力,才能够加入logo
qRCodeEncoder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M;
Image image = qRCodeEncoder.Encode(strSource, Encoding.GetEncoding("utf-8"));
// 写入二维码
int x = (int)(width - image.Width) / 2;
int y = (int)(height - image.Height) / 2;
objgraphics.DrawImage(image, new Point(x, y));
// 添加Logo图标
image = YHFYWebSite.Properties.Resources.logo;
x = (int)(width - image.Width) / 2;
y = (int)(height - image.Height) / 2;
objgraphics.DrawImage(image, new Point(x, y));
return bmp;
}