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

来源:http://www.cnblogs.com/liqingwen/archive/2017/05/19/6876392.html
-Advertisement-
Play Games

BarcodeLib -- 一個精簡而不失優雅的條形碼生成庫 引言 在百度進行“C# 條形碼”等類似關鍵字搜索的時候,基本上是使用 ZXing 類庫進行條形碼的生成。今天我所介紹的是另一款類庫 Barcode,一起來共同見證它的強大之處。 目錄 插曲 官方介紹 Nuget 安裝 支持的類型 簡單使用 ...


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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 實在受不了在Windows下編程,所以自己就安裝了一個Ubutun,公司用的翻牆軟體shadowsocks在Windows上用起來很簡單很爽,但是在Ubutun上的安裝和配置就沒那麼簡單了,寫下這篇文章,希望需要的朋友能簡單快速的搞定shadowsocks的安裝和配置 1.安裝 在命令行執行上面的三 ...
  • 8.1 實例構造器和類(引用類型) 構造引用類型的對象時,在調用類型的實例構造器之前,為對象分配的記憶體總是先被歸零 。沒有被構造器顯式重寫的所有欄位都保證獲得 0 或 null 值。 構造器不能被繼承。不能使用以下修飾符: virtual,new,override,sealed和abstract. ...
  • IDE:VisualStudio 2017 Language:VB.NET/C# 圖形API:Win2D 游戲引擎:ExperDot.EDGameEngine 本文將向你介紹一種粒子系統(Partical System)模擬植物的簡單方法。 第一節 移動 粒子將按照某種規則移動,且始終保留移動軌跡。 ...
  • 本文內容是本人參考多本經典C 書籍和一些前輩的博文做的總結 儘管.NET運行庫負責處理大部分記憶體管理工作,但C 程式員仍然必須理解記憶體管理的工作原理,瞭解如何高效地處理非托管的資源,才能在非常註重性能的系統中高效地處理記憶體。 C 編程的一個優點就是程式員不必擔心具體的記憶體管理,垃圾回收器會自動處理所 ...
  • redis 介紹和常用命令 redis簡介 Redis 是一款開源的,基於 BSD 許可的,高級鍵值 (key-value) 緩存 (cache) 和存儲 (store) 系統。由於 Redis 的鍵包括 string,hash,list,set,sorted set,bitmap 和 hyperl ...
  • 此貼為本人原創,轉載請註明出處 序 前幾天更新了被打入冷宮很久的酷狗,等進入之後就感覺菊花一緊————試 聽 居 然 都 要 開 通 音 樂 包(高品和無損)才行了,WTF! 這意味著以前緩存的都聽不了了,本著好馬不吃回頭草的原則,不打算去降級了,下載PJ版的又擔心被植入惡意代碼,心好累╮(╯▽╰) ...
  • 在部署IIS環境中,偶爾會遇到 404 錯誤,就算以前遇到過,也因為時間久了導致大概知道是什麼錯了,具體解決方案覺忘了,所以留下一個記錄,留給自己,也是給大家一點提醒。(註:錯誤信息也懶得截圖了,希望大家諒解) 1.百度看到好多人說在web.config文件中添加modules runAllMana ...
  • 背水一戰 Windows 10 之 控制項(集合類): Pivot, Hub ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...