提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
记录学习和探索过程
一、二维码名片vCard是什么?
vCard:它是一种用于定义电子名片的标准或这规范。常见的,我们的手机通讯录,可以导出为vCard格式。
网上也能在线生成相应的二维码名片,但网上在线的一般带有推广网址,信息杂。我们现在通过ThoughtWorks生成vCard格式的二维码名片,实现微信扫一扫就可以把名片存入到手机通讯录。(支持iOS和Android)
部分参考文档:https://blog.csdn.net/daiqianjie/article/details/51959542
二、使用步骤
1.引入库
代码如下:
using System;
using System.Drawing;//提供对GDI+图形功能的访问权限
using System.Text;
using System.Web.UI;
using System.Data.SqlClient;//数据连接
using ThoughtWorks.QRCode.Codec;//二维码生成与解析
2.读取OA数据
代码如下(示例):
ygid = Context.User.Identity.Name;//asp当前登录账号
using (SqlConnection conn = new SqlConnection("EHR数据源"))
{
conn.Open();
SqlCommand command = new SqlCommand("select lastname,jobtitlename,departmentname,mobile,email,telephone from VW_YGXX where workcode = '" + ygid + "'", conn);//根据当前ID获取OA系统员工信息视图语句
SqlDataReader sread = command.ExecuteReader();
if (sread.Read())
{
//存一下读取的信息,方式无所谓
Textname.Text = sread["lastname"].ToString();//名字
Textpos.Text = sread["jobtitlename"].ToString();//职位
Textdept.Text = sread["departmentname"].ToString();//部门名称
Texttel.Text = sread["mobile"].ToString();//手机号码
Textmail.Text = sread["email"].ToString();//邮箱地址
Textstel.Text = sread["telephone"].ToString();//工作短号
}
conn.Close();
}
3.生成名片
``
private void BuildCode()
{
try
{
StringBuilder card = new StringBuilder();
card.Append("BEGIN:VCARD");
card.Append("\r\nFN:" +"XX公司"+ Textname.Text);//可以在名字面前加个公司抬头
card.Append("\r\nTITLE:" + Textpos.Text);
card.Append("\r\nORG:" + Textcom.Text + ";" + Textdept.Text);
card.Append("\r\nTEL;CELL:" + Texttel.Text);
card.Append("\r\nTEL;WORK:" + Textstel.Text);
card.Append("\r\nADR;WORK;POSTAL:" + Textadr.Text);
//card.Append("\r\nURL:" + Textweb.Text);
card.Append("\r\nEMAIL;WORK:" + Textmail.Text);
card.Append("\r\nPHOTO;ENCODING=b;TYPE=JPEG:");
card.Append("\r\nEND:VCARD\r\n");
//card.ToString();
Bitmap b = GetTwoDimensionCode(card.ToString(), string.Empty, 270, 270, "微软雅黑");
//二维码图片的名称
string filename = Textno.Text+"-" + DateTime.Now.ToString("yyyyMMddHHmmss");
//保存二维码图片在DWimg路径下
b.Save(Server.MapPath("~/DWimg/") + filename + ".jpg");
//图片控件要显示的二维码图片路径
Image1.ImageUrl = "~/DWimg/" + filename + ".jpg";
string source = Server.MapPath("~/img/logo.jpg");
}
catch (Exception ex)
{
tsInfo.Visible = true;
tsInfo.Text = ex.Message;
}
}
public static Bitmap GetTwoDimensionCode(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);
//
QRCodeEncoder qrCodeEncoder =new QRCodeEncoder();
// 设置编码方法
qrCodeEncoder.QRCodeEncodeMode =
QRCodeEncoder.ENCODE_MODE.BYTE;
// 设置大小
qrCodeEncoder.QRCodeScale = 3;
// 适用于信息量较少的情形,图像越小保存的信息量越少
//qrCodeEncoder.QRCodeScale = 4;
// 设置版本
qrCodeEncoder.QRCodeVersion = 0;
// 设置错误校验的级别,正因为二维码有纠错能力,才能够加入logo
qrCodeEncoder.QRCodeErrorCorrect =QRCodeEncoder.ERROR_CORRECTION.M;
Bitmap 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 = Properties.Resource1.logo1;
x = (int)(width - image.Width) / 2;
y = (int)(height - image.Height) / 2;
objGraphics.DrawImage(image, new Point(x, y));
return bmp;
}
4.名片效果
# 总结
以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。