[C#] BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫


BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫

 

引言

  在百度進行“C# 條形碼”等類似關鍵字搜索的時候,基本上是使用 ZXing 類庫進行條形碼的生成。今天我所介紹的是另一款類庫 Barcode,一起來共同見證它的強大之處。

 

目錄

  • 插曲
  • 官方介紹
  • Nuget 安裝
  • 支持的類型
  • 簡單使用

 

插曲

  請先允許我娓娓道來一個凄美的故事。

  有一對情侶,男的非常懦弱,做什么事情之前都讓女友先試。女友對此十分不滿。一次,兩人出海,返航時,颶風將小艇摧毀,幸虧女友抓住了一塊木板才保住了兩人的性命。女友問男友:“你怕嗎?”男友從懷中掏出一把水果刀,說:“怕,但有鯊魚來,我就用這個對付它。”女友只是搖頭苦笑。不久,一艘貨輪發現了他們,正當他們欣喜若狂時,一群鯊魚出現了,女友大叫:“我們一起用力游,會沒事的!”男友卻突然用力將女友推進海里,扒着木板朝貨輪游去,並喊道:“這次我先試!”女友驚呆了,望着男友的背影,感到非常絕望。鯊魚正在靠近,可鯊魚對女友不感興趣而徑直向男友游去,男友被鯊魚凶猛地撕咬着,他發瘋似地沖女友喊道:“我愛你!”女友獲救了,甲板上的人都在默哀,船長坐到女友身邊說:“小姐,他是我見過最勇敢的人。我們為他祈禱!”“不,他是個膽小鬼。”女友冷冷地說。“您怎么這樣說呢?剛才我一直用望遠鏡觀察你們,我清楚地看到他把你推開后用刀子割破了自己的手腕。鯊魚對血腥味很敏感,如果他不這樣做來爭取時間,恐怕你永遠不會出現在這艘船上。”“什么?”女友聽到真相如同晴天霹靂,她悲痛欲絕,傷心無比,但她突然想到男友是學C#的。只有學C#的程序員才有這么高的覺悟, C#是目前使用最為廣泛的網絡編程語言之一,它具有簡單,面向對象,穩定,與平台無關,多線程,動態等特點。學C#的同學品質優異,有強大的博學雅正融合的意識,並具備強大的心理承受能力,人文情懷,領袖氣質,個個都是老師的好助手,同學的好伙伴。選擇C#,就是選擇成功!(來源於互聯網)

 

官方介紹

  • 在ASP.NET,Windows,Reporting Service,Crystal Reports 和 RDLC Reports應用程序中輕松生成條形碼
  • 生成准確的條形碼圖像,並可以保存為 C# 和 VB.NET 類中的 JPEG,GIF 或 PNG 圖像文件
  • 兼容 C# 和 VB.NET
  • 由 .NET 程序員廣泛使用
  • 符合最新的條形碼符號體系標准,如 ISO / IEC,GS1
  • 創建線性條形碼,包括 Code39,Code128,GS1-128,Interleaved 2 of 5,EAN / UPC
  • 創建 2d 條形碼圖像,包括數據矩陣,PDF-417 和 QR 碼

 

Nuget 安裝

 

支持的類型

  類型很多,這里演示使用的是 TYPE.CODE128B。

    public enum TYPE
    {
        UNSPECIFIED = 0,
        UPCA = 1,
        UPCE = 2,
        UPC_SUPPLEMENTAL_2DIGIT = 3,
        UPC_SUPPLEMENTAL_5DIGIT = 4,
        EAN13 = 5,
        EAN8 = 6,
        Interleaved2of5 = 7,
        Standard2of5 = 8,
        Industrial2of5 = 9,
        CODE39 = 10,
        CODE39Extended = 11,
        CODE39_Mod43 = 12,
        Codabar = 13,
        PostNet = 14,
        BOOKLAND = 15,
        ISBN = 16,
        JAN13 = 17,
        MSI_Mod10 = 18,
        MSI_2Mod10 = 19,
        MSI_Mod11 = 20,
        MSI_Mod11_Mod10 = 21,
        Modified_Plessey = 22,
        CODE11 = 23,
        USD8 = 24,
        UCC12 = 25,
        UCC13 = 26,
        LOGMARS = 27,
        CODE128 = 28,
        CODE128A = 29,
        CODE128B = 30,
        CODE128C = 31,
        ITF14 = 32,
        CODE93 = 33,
        TELEPEN = 34,
        FIM = 35,
        PHARMACODE = 36
    }

 

簡單使用

  Barcode 是核心類,它擁有 3 個構造函數,並且它實現了 IDisposable 接口,所以我們應該使用 uisng 關鍵字在執行完畢后進行資源的釋放。

        public Barcode();
        public Barcode(string data);
        public Barcode(string data, TYPE iType);

 

  Encode() 是用來進行編碼操作的方法,調用完畢后會生成一張位圖。

        public Image Encode(TYPE iType, string StringToEncode);
        public Image Encode(TYPE iType, string StringToEncode, Color ForeColor, Color BackColor);
        public Image Encode(TYPE iType, string StringToEncode, int Width, int Height);
        public Image Encode(TYPE iType, string StringToEncode, Color ForeColor, Color BackColor, int Width, int Height);

 

  當然,它也自帶了對應的保存到文件中的方法 SaveImage。

        public void SaveImage(string Filename, SaveTypes FileType);
        public void SaveImage(Stream stream, SaveTypes FileType);

 

  默認支持保存的文件類型:

    public enum SaveTypes
    {
        JPG = 0,
        BMP = 1,
        PNG = 2,
        GIF = 3,
        TIFF = 4,
        UNSPECIFIED = 5
    }

 

  這是一個較為簡單的用法:

        /// <summary>
        /// 生成條形碼
        /// </summary>
        /// <param name="content">內容</param>
        /// <returns></returns>
        public static Image GenerateBarCodeBitmap(string content)
        {
            using (var barcode = new Barcode()
            {
                IncludeLabel = true,
                Alignment = AlignmentPositions.CENTER,
                Width = 250,
                Height = 100,
                RotateFlipType = RotateFlipType.RotateNoneFlipNone,
                BackColor = Color.White,
                ForeColor = Color.Black,
            })
            {
                return barcode.Encode(TYPE.CODE128B, content);
            }
        }

  【備注】我在 IncludeLabel 屬性中對它進行了賦值 true 操作。如果不進行參數指定的話,就只能夠生成條形碼,而不會在底部顯示數據。

  你也可以進入 http://www.fanguzai.net/#/code 自己手動進行測試。

 

 


【博主】反骨仔

【原文】http://www.cnblogs.com/liqingwen/p/6876392.html

【參考】https://www.codeproject.com/Articles/20823/Barcode-Image-Generation-Library

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM