前言
在使用C#语言进行客户端软件开发时很多时候我们会有需要生成二维码和一维码的需求,在智能工厂和一些商品扫码之类的软件中应用居多,此文章简单记录了一维码和二维码的编码格式和使用ZXing库生成二维码和一维码的过程。
一、引入Zxing.net
在编写代码之前我们需要先在NuGet中引入Zxing.net
右键点击解决方案名称----->点击管理NuGet程序包
在程序包中搜索Zxing---->点击安装Zxing.net
二、主要代码
1.引入库
using ZXing;
using ZXing.Common;
using ZXing.QrCode;
2.生成条形码
/// <summary>
/// 生成条形码
/// </summary>
/// <param name="barcodeContent">需要生成条码的内容</param>
/// <param name="barcodeWidth">条码宽度</param>
/// <param name="barcodeHeight">条码长度</param>
/// <returns>返回条码图形</returns>
public static Bitmap GetBarcodeBitmap(string barcodeContent, int barcodeWidth, int barcodeHeight)
{
BarcodeWriter barcodeWriter = new BarcodeWriter();
barcodeWriter.Format = BarcodeFormat.CODE_39;//设置编码格式
EncodingOptions encodingOptions = new EncodingOptions();
encodingOptions.Width = barcodeWidth;//设置宽度
encodingOptions.Height = barcodeHeight;//设置长度
encodingOptions.Margin = 2;//设置边距
barcodeWriter.Options = encodingOptions;
Bitmap bitmap = barcodeWriter.Write(barcodeContent);
return bitmap;
}
3.生成二维码
/// <summary>
/// 生成二维码
/// </summary>
/// <param name="qrCodeContent">要生成二维码的内容</param>
/// <param name="qrCodeWidth">二维码宽度</param>
/// <param name="qrCodeHeight">二维码高度</param>
/// <returns>返回二维码图片</returns>
public static Bitmap GetQRCodeBitmap(string qrCodeContent,int qrCodeWidth,int qrCodeHeight)
{
BarcodeWriter barcodeWriter = new BarcodeWriter();
barcodeWriter.Format = BarcodeFormat.QR_CODE;
QrCodeEncodingOptions qrCodeEncodingOptions = new QrCodeEncodingOptions();
qrCodeEncodingOptions.DisableECI = true;
qrCodeEncodingOptions.CharacterSet = "UTF-8";//设置编码
qrCodeEncodingOptions.Width = qrCodeWidth;//设置二维码宽度
qrCodeEncodingOptions.Height = qrCodeHeight;//设置二维码高度
qrCodeEncodingOptions.Margin = 0;//设置二维码边距
barcodeWriter.Options = qrCodeEncodingOptions;
Bitmap bitmap = barcodeWriter.Write(qrCodeContent);//写入内容
return bitmap;
}
小结:
一维码和二维码的编码格式
一维条码的编码方式:Code39码(标准39码)、Codabar码(库德巴码)、Code25码(标准25码)、ITF25码(交叉25码)、Matrix25码(矩阵25码)、UPC-A码、UPC-E码、EAN-13码(EAN-13国际商品条码)、EAN-8码(EAN-8国际商品条码)、Code128码(Code128码,包括EAN128码)等。
二维条码:PDF417码、Code49码、Code 16K码、Data Matrix码、MaxiCode码等,主要分为堆积或层排式和棋盘或矩阵式两大类。
目前,国际广泛使用的条码种类有EAN、UPC码(商品条码,用于在世界范围内唯一标识一种商品。我们在超市中最常见的就是这种条码)、Code39码(可表示数字和字母,在管理领域应用最广)、ITF25码(在物流管理中应用较多)、Codebar码(多用于医疗、图书领域)、Code93码、Code128码等。其中,EAN码是当今世界上广为使用的商品条码,已成为电子数据交换(EDI)的基础;UPC码主要为美国和加拿大使用;在各类条码应用系统中,Code39码因其可采用数字与字母共同组成的方式而在各行业内部管理上被广泛使用;在血库、图书馆和照像馆的业务中,Codebar码也被广泛使用。