(zxing.net)一维码UPC E的简介、实现与解码
UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定、连续性的条 码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码。 UPC码仅可用来表示数字,故其字码集为数字0~9。UPC码共有A、B、C、D、E等五种版本。
- UPC E码又称UPC缩短码。
- UPC E码是UPC A码的简化型式,其编码方式是将UPC A码整体压缩成短码以方便使用,因此其编码形式须经由UPC A码来转换。
UPC E由6位数码与左右护线组成,无中间线。6位数字码的排列为3奇3偶,其排列方法取决于检查码的值。UPC-E码只用于国别码为0的商品。
UPC E码结构如下图:
- 左护线:为辅助码,不具任何意义,仅供列印时作为识别之用,逻辑型态为010101,其中0代表细白,1代表细黑。
- 右护线:同UPC A码,逻辑型态为101。
- 检查码:为UPC A码原形的检查码,其作用为一导入值,并不属於资料码的一部份。
- 资料码:扣除第一码固定为0外,UPC E实际参与编码的部份只有六码,其编码方式,视检查码的值来决定。
二、实现
public ActionResult UPCE() { EncodingOptions options = new EncodingOptions(); options.PureBarcode = false; options.GS1Format = false; options.Width = 110; options.Height = 75; options.Margin = 0; BarcodeWriter writer = new BarcodeWriter(); writer.Format = BarcodeFormat.UPC_E; writer.Options = options; //如需设置图片为其它颜色,使用此段代码 //BitmapRenderer renderer = new BitmapRenderer(); //renderer.Foreground = Color.Black; //renderer.Background = Color.White; //writer.Renderer = renderer; Bitmap bmp = writer.Write("00123457"); MemoryStream ms = new MemoryStream(); bmp.Save(ms, ImageFormat.Png); ms.Flush(); ms.Position = 0; return File(ms, "application/x-png"); //Stream sm = BarcodeHelper.UPCE(new UPCEOptions("00123457")); //return File(sm, "application/x-png"); }
结果图片如下:
三、解码