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 条码生成截图
近期下载者:
相关文件:
收藏者: