xgpxg-BCGAR-master

所属分类:图形图象
开发工具:C#
文件大小:22214KB
下载次数:1
上传日期:2020-09-19 09:00:28
上 传 者zzjygq
说明:  条形码生成与识别源码,主要是EAN13条形码的生成
(Barcode generation and identification source code, mainly the generation of EAN13 barcode)

文件列表:
BCGAR (0, 2018-04-17)
BCGAR\BCGAR.zip (22032397, 2018-04-17)
BCGAR\BCGAR (0, 2018-04-17)
BCGAR\BCGAR\Application Files (0, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0 (0, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\Emgu.CV.UI.GL.dll.deploy (27136, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\Emgu.CV.UI.dll.deploy (118272, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\Emgu.CV.World.dll.deploy (609280, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\ZedGraph.dll.deploy (307200, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\countries.txt.deploy (8703, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\zxing.dll.deploy (436224, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\zxing.presentation.dll.deploy (21504, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\条形码生成与识别.application (5809, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\条形码生成与识别.exe.config.deploy (184, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\条形码生成与识别.exe.deploy (18960, 2018-04-17)
BCGAR\BCGAR\Application Files\条形码生成与识别_1_0_0_0\条形码生成与识别.exe.manifest (11666, 2018-04-17)
BCGAR\BCGAR\setup.exe (839184, 2018-04-17)
BCGAR\BCGAR\条形码生成与识别.application (5809, 2018-04-17)
BCGAR\LICENSE (1075, 2018-04-17)
BCGAR\countries.txt (8703, 2018-04-17)
BCGAR\条形码生成与识别 (0, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别.sln (1366, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别 (0, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\App.config (184, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Code.cs (6950, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Form1.Designer.cs (12873, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Form1.cs (6967, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Form1.resx (5698, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Program.cs (514, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties (0, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties\AssemblyInfo.cs (1310, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties\Resources.Designer.cs (2790, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties\Resources.resx (5496, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties\Settings.Designer.cs (1081, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\Properties\Settings.settings (242, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\countries.txt (8703, 2018-04-17)
BCGAR\条形码生成与识别\条形码生成与识别\packages.config (135, 2018-04-17)
... ...

# BCGAR Bar code generation and recognition
【2018-04-17】 补充countries.txt文件
EAN-13条形码的生成与识别 [TOC] # 一、EAN-13条形码编码规则 ## 1.条码构成 EAN13条形码由13位数字构成,其中第一位为前置码,最后一位为校验码。条码格式如下:
![](https://i.imgur.com/Oc9dNEX.png) 图1.1 条形码格式 ![](https://i.imgur.com/TGJ0a8y.png) 图1.2 条形码区域划分
## 2.条码编码原则 ### (1)检验码计算 从左向右,取奇数位求和乘以1(不包含校验位),偶数位求和乘以3,将以上两步的结果求和再取和的个位数,最后再用10减这个个位数,就是最后一位校验码的值。 例如: 690123456789C(c为校验位) 1 计算奇数位的和:(6+0+2+4+6+8)*1=26; 2 计算偶数位的和:(9+1+3+5+7+9)*3=102; 3 计算和:sum = 26+102=128; 4 10-个位数:C=10-8=2。 ### (2)左侧字符编码原则 从左向右,第2位到第7位(6个数字)为左侧字符。左侧字符采用两种编码方式:A方式或B方式,编码表如下:
![](https://i.imgur.com/Os3SUK5.png) 图1.3 左侧字符编码
然后根据前置码(第一位)确定这6个字符的编码方式是A还是B。 前置码决定的编码方式如下表:
![](https://i.imgur.com/w4rtggw.png) 图1.3 编码方式
例如:6901234567892的前置码为6,查上表,左侧6个数据的编码方式为ABBBAA。 ### (3)右侧字符编码原则 右侧字符从第8个字符起到最后一位。均按照C方式编码。 # 二、生成条形码 条形码只由和白区间表示,空白表示0,黑色表示1,所以先将十进制的数字字符根据编码表转化为二进制的形式,然后在绘制图像。 ## 1.十进制转二进制 这里十进制转二进制不是按照运算法则转化,而是根据EAN-13的编码表进行转化。 ### (1) 获取编码方式 public byte[] GetCodeChose(int prefix) > 输入:prefix:前置码 > > 输出:编码方式数组 该函数用来根据前置码获取编码方式。 ### (2)对编码表进行处理,转化为三维数组的形式 byte[,][] code = new byte[3,10][]; 或者写成定常数组也可以: byte[,,,] code = new byte[3,10,7]; 第一维存放编码方式;第二维存放十进制数字符号;第三维存放相应的二进制编码。 然后利用函数: public byte[] GetCode(int type,int num) >输入: type:编码方式 ;num:十进制数字 > >输出:十进制字符的二进制表示。 ##2 绘制条形码 ### (1) 根据上一步得到的二进制数组,0代表黑色,1代表白色,开始绘制图像。 EAN-13共113个模块(即113个条纹,包括左右两侧空白区),95个有效字符模块,并且条码的每个模块(即一个条纹)是等宽的。 所以设置绘制函数如下: public Image DrawCode(string text,string code, int minWidth,int height) > 输入:text:前12个字符;code:二进制编码;条纹最小宽度;height:生成图像的高度 > 输出:条形码图像 其中,为了绘制起始位、分隔位以及终止位的不同长度,将height - margin + height / 15作为起始位、分隔位以及终止位的长度。 注:起始符为101;分隔符为01010;终止符为101。可以在生成二进制编码时加上。 ### (2) 对输入的条码编号进行简单验证 为了保证输入条码编号的有效性,这里做一个简单的验证。 - 验证输入长度:输入长度应为12位(校验位自动计算得出,不用输入) - 验证输入类型:必须位纯数字,否则抛出异常 - 验证国家代码:前三位数字代表国家代码,如果不能匹配国家名称,则抛出异常 # 三、识别条形码 # 1.识别方法 简单点说就是利用黑白色对光的反射程度不同,黑色吸收了大部分光波,白色返回大部分光波,所以根据返回的光波强就可以判断时扫描到的是黑色还是白色区域,然后再转化为0或者1的数字信号即可。 上述方法是在有硬件条件下的识别方法,对于没有识别器的时候,我们可以借助条码(或者二维码)识别库zbar(日本的)和zxing(美国的)来进行识别。或者直接根据像素点的值判断也可。 本次是利用zxing进行识别。 # 2.zxing.net的使用 首先在NuGet中下载安装zxing.net,会自动引入zxing.dll。 然后实例化识别器: BarcodeReader reader = new BarcodeReader(); 获取结果集: Result result = reader.Decode(bitmap) 获取识别文本: string resText = result.Text; 这样一个简单的识别就完成了。 还可以设置字符编码: ader.Options.CharacterSet = "UTF-8"; # 四、源代码 完整项目地址(码云):[https://gitee.com/xgpxg/BCGAR](https://gitee.com/xgpxg/BCGAR) # 五、截图
![](https://i.imgur.com/9E5eZhH.png) 图5.1 条码生成截图 ![](https://i.imgur.com/ElUJ5kZ.png)
图5.2 条码生成截图

近期下载者

相关文件


收藏者