(zxing.net)一维码UPC A的简介、实现与解码
一、简介
UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定、连续性的条 码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码。 UPC码仅可用来表示数字,故其字码集为数字0~9。UPC码共有A、B、C、D、E等五种版本。
UPC A码又称UPC标准码,它的结构如下图:
每个UPC A码包含部分如下图:
UPC A码具有以下特点:
- 每个字码皆由7个模组组合成2线条2空白,其逻辑值可用7个二进制数字表示,例如逻辑值0001101代表数字1,逻辑值0为空白,1为线条,故数字1的UPC-A码为粗空白(000)-粗线条(11)-细空白(0)-细线条(1)。
- 从空白区开始共113个模组,每个模组长0.33mm,条码符号长度为37.29mm。
- 中间码两侧的资料码编码规则是不同的,左侧为奇,右侧为偶。奇表示线条的个数为奇数;偶表示线条的个数为偶数。
- 起始码、终止码、中间码的线条高度长於数字码。
二、实现
public ActionResult UPCA() { EncodingOptions options = new EncodingOptions(); options.PureBarcode = false; options.GS1Format = false; options.Width = 100; options.Height = 75; options.Margin = 0; BarcodeWriter writer = new BarcodeWriter(); writer.Format = BarcodeFormat.UPC_A; writer.Options = options; //如需设置图片为其它颜色,使用此段代码 //BitmapRenderer renderer = new BitmapRenderer(); //renderer.Foreground = Color.Black; //renderer.Background = Color.White; //writer.Renderer = renderer; Bitmap bmp = writer.Write("012340000046"); MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Png); ms.Flush(); ms.Position = 0; return File(ms, "application/x-png"); }
结果图片如下:
三、解码