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

一、简介

UPC(Universal Product Code)码是最早大规模应用的条码,其特性是一种长度固定、连续性的条  码,目前主要在美国和加拿大使用,由于其应用范围广泛,故又被称万用条码。 UPC码仅可用来表示数字,故其字码集为数字0~9。UPC码共有A、B、C、D、E等五种版本。

UPC A码又称UPC标准码,它的结构如下图:

每个UPC A码包含部分如下图:

 

UPC A码具有以下特点:

  1. 每个字码皆由7个模组组合成2线条2空白,其逻辑值可用7个二进制数字表示,例如逻辑值0001101代表数字1,逻辑值0为空白,1为线条,故数字1的UPC-A码为粗空白(000)-粗线条(11)-细空白(0)-细线条(1)。
  2. 从空白区开始共113个模组,每个模组长0.33mm,条码符号长度为37.29mm。
  3. 中间码两侧的资料码编码规则是不同的,左侧为奇,右侧为偶。奇表示线条的个数为奇数;偶表示线条的个数为偶数。
  4. 起始码、终止码、中间码的线条高度长於数字码。

二、实现

    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");
    }

结果图片如下:

    

三、解码

点击查看

原文地址:https://www.cnblogs.com/weiweixiang/p/10077391.html