(zxing.net)一维码Code 128的简介、实现与解码

一、简介

一维码Code 128:1981年推出,是一种长度可变、连续性的字母数字条码。与其他一维条码比较起来,相对较为复杂,支持的字元也相对较多,又有不同的编码方式可供交互运用,因此其应用弹性也较大。

Code 128特性:

  1. 具有A、B、C三种不同的编码类型,可提供标准ASCII中128个字元的编码使用;
  2. 允许双向扫描;
  3. 可自行决定是否加上检验位;
  4. 条码长度可调,但包括开始位和结束位在内,不可超过232个字元;
  5. 同一个128码,可以由A、B、C三种不同编码规则互换,既可扩大字元选择的范围,也可缩短编码的长度。

Code 128各编码方式的编码范围:

  1. Code 128 A:标准数字和字母,控制符,特殊字符;
  2. Code 128 B:标准数字和字母,小写字母,特殊字符;
  3. Code 128 C/EAN 128:[00]-[99]的数字对集合,共100个,即只能表示偶数位长度的数字。

Code 128编码规则:开始位+[FNC1(为EAN 128码时加)] + 数据位 + 检验位 + 结束位。

Code128检验位计算:(开始位对应的ID值 + 每位数据在整个数据中的位置 * 每位数据对应的ID值) % 103。

二、实现

 1         public ActionResult CODE_128()
 2         {
 3             Code128EncodingOptions options = new Code128EncodingOptions();
 4             options.ForceCodesetB = false; //如果为true,请不要为数字切换到代码集C. 不知道什么鬼
 5             options.PureBarcode = false; //是否将内容字符串显示在图片上。false 为显示 true为不显示
 6             options.GS1Format = false;    //是否符合GS1
 7             options.Width = 150;    //图片宽度,根据内容的长度会自动增长
 8             options.Height = 75;    //图片高度
 9             options.Margin = 30;    //填充,在图片左右填充空白 30则左右各15
10 
11             BarcodeWriter writer = new BarcodeWriter();
12             writer.Format = BarcodeFormat.CODE_128;
13             writer.Options = options;
14 
15             //如需设置图片为其它颜色,使用此段代码
16             //BitmapRenderer renderer = new BitmapRenderer();
17             //renderer.Foreground = Color.Black;
18             //renderer.Background = Color.White;
19             //writer.Renderer = renderer;
20 
21             Bitmap bmp = writer.Write("123456789");
22             MemoryStream ms = new MemoryStream();
23             bmp.Save(ms, ImageFormat.Png);
24             ms.Flush();
25             ms.Position = 0;
26             return File(ms, "application/x-png");
27         }

测试图像如下:

    

三、解码

   点击查看

 

posted @ 2018-12-06 10:37  a boy  阅读(1911)  评论(0编辑  收藏  举报