c#教程之基于C#⽣成条形码操作知识汇总附源码下
1. 介绍
1.1 条形码
条形码(barcode):是将宽度不等的多个⿊条和空⽩,按照⼀定的编码规则排列,⽤以表达⼀组信息的图形标识符。
1.2 条形码分类
可分为⼀维条形码和⼆维条形码:
⼀维条形码:只是在⼀个⽅向(⼀般是⽔平⽅向)表达信息,⽽在垂直⽅向则不表达任何信息。
⼆维条形码:在⽔平和垂直⽅向的⼆维空间存储信息的条形码。
1.3 第三⽅类库:ZXing.Net
1.3.1 说明
ZXing 是⼀个可⽣成和读取 1D/2D(1维/2维) 条形码的开源类库。原先是Java版本,后由第三⽅衍⽣了⽀持QT、C++、.Net等版本。
.Net版本⽀持的平台:.Net 2.0, 3.5 and 4.0、Silverlight 4 and 5、Windows Phone 7.0, 7.1 and 8.0、Windows CE、Unity3D、Xamarin.Android 等等。
1.3.2 下载地址
2. ⼀维码操作
2.1 介绍
⼀维条形码:只是在⼀个⽅向(⼀般是⽔平⽅向)表达信息,⽽在垂直⽅向则不表达任何信息。
常⽤码制:EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码及Codabar(库德巴码)等。
国内推⾏使⽤的是EAN商品条形码,可分为EAN-13(标准版)和EAN-8(缩短版)两种。
例图:
2.2 ⽣成⼀维码
以⽣成EAN-13码制为例:
1 2 3 4 5 6 7 8 9 10 11// 1.设置条形码规格
EncodingOptions encodeOption = new EncodingOptions();
encodeOption.Height = 130; // 必须制定⾼度、宽度
encodeOption.Width = 240;
// 2.⽣成条形码图⽚并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Options = encodeOption;
wr.Format = BarcodeFormat.EAN_13; // 条形码规格:EAN13规格:12(⽆校验位)或13位数字
Bitmap img = wr.Write(this.ContentTxt.Text); // ⽣成图⽚
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-"+ this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
2.3 读取⼀维码
以读取EAN-13码制的图⽚为例:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19};
// 2.进⾏读取操作
ZXing.BarcodeReader br = new BarcodeReader();
br.Options = decodeOption;
ZXing.Result rs = br.Decode(this.barCodeImg.Image as Bitmap); if(rs == null)
{
this.ContentTxt.Text = "读取失败";
MessageBox.Show("读取失败");
}
else
{
this.ContentTxt.Text = rs.Text;
MessageBox.Show("读取成功,内容:"+ rs.Text);
}
3. ⼆维码操作
3.1 介绍
⼆维码:在⽔平和垂直⽅向的⼆维空间存储信息的条形码。
常⽤码制:PDF417、QR Code、Code 49、Code 16K、Code One等。例图:
3.2 ⽣成⼆维码
以⽣成QR码制为例:
1 2 3 4 5 6 7 8 9 10 11 12 13// 1.设置QR⼆维码的规格
ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions(); qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中⽂'乱码
qrEncodeOption.Height = 200;
qrEncodeOption.Width = 200;
qrEncodeOption.Margin = 1; // 设置周围空⽩边距
// 2.⽣成条形码图⽚并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.QR_CODE; // ⼆维码
wr.Options = qrEncodeOption;
Bitmap img = wr.Write(this.ContentTxt.Text);
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-"+ this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
3.3 读取⼆维码
以读取QR码制的图⽚为例:
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19;
// 2.进⾏读取操作
ZXing.BarcodeReader br = new BarcodeReader();
br.Options = decodeOption;
ZXing.Result rs = br.Decode(this.barCodeImg.Image as Bitmap); if(rs == null)
{
this.ContentTxt.Text = "读取失败";
MessageBox.Show("读取失败");
}
else
{图片下载站源码
this.ContentTxt.Text = rs.Text;
MessageBox.Show("读取成功,内容:"+ rs.Text);
}
3.4 ⽣成带Logo的⼆维码
⼆维码带有校验功能,故可以在中间区域展⽰⼀定尺⼨的图⽚。例图:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23// 1.设置QR⼆维码的规格
ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOpt
ions(); qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中⽂'乱码
qrEncodeOption.Height = 200;
qrEncodeOption.Width = 200;
qrEncodeOption.Margin = 1; // 设置周围空⽩边距
// 2.⽣成条形码图⽚
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.QR_CODE; // ⼆维码
wr.Options = qrEncodeOption;
Bitmap img = wr.Write(this.ContentTxt.Text);
// 3.在⼆维码的Bitmap对象上绘制logo图⽚
Bitmap logoImg = Bitmap.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\logo.jpg") as Bitmap; Graphics g = Graphics.FromImage(img);
Rectangle logoRec = new Rectangle(); // 设置logo图⽚的⼤⼩和绘制位置
logoRec.Width = img.Width / 6;
logoRec.Height = img.Height / 6;
logoRec.X = img.Width / 2 - logoRec.Width / 2; // 中⼼点
logoRec.Y = img.Height / 2 - logoRec.Height / 2;
g.DrawImage(logoImg, logoRec);
// 4.保存绘制后的图⽚
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-"+ this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
4. 源码下载4.1 运⾏图
4.2 下载地址
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论