C# 條形碼操作【原始碼下載】
本篇介紹通過C#生成和讀取一維碼、二維碼的操作。
目錄
1. 介紹:介紹條形碼、條形碼的分類以及ZXing.Net類庫。
2. 一維碼操作:包含對一維碼的生成、讀取操作。
3. 二維碼操作:包含對二維碼的生成、讀取操作,以及生成帶Logo的二維碼。
4. 原始碼下載:展示執行圖及原始碼下載。
1. 介紹
1.1 條形碼
條形碼(barcode):是將寬度不等的多個黑條和空白,按照一定的編碼規則排列,用以表達一組資訊的圖形識別符號。
1.2 條形碼分類
可分為一維條形碼和二維條形碼:
一維條形碼:只是在一個方向(一般是水平方向)表達資訊,而在垂直方向則不表達任何資訊。
二維條形碼:在水平和垂直方向的二維空間儲存資訊的條形碼。
1.3 第三方類庫:ZXing.Net
1.3.1 說明
ZXing 是一個可生成和讀取 1D/2D(1維/2維) 條形碼的開源類庫。原先是Java版本,後由第三方衍生了支援QT、C++、.Net等版本。
.Net版本支援的平臺:.Net 2.0, 3.5 and 4.0、Silverlight 4 and 5、Windows Phone 7.0, 7.1 and 8.0、Windows CE、Unity3D、Xamarin.Android 等等。
1.3.2 下載地址
2. 一維碼操作
2.1 介紹
一維條形碼:
常用碼制:EAN碼、39碼、交叉25碼、UPC碼、128碼、93碼,ISBN碼及Codabar(庫德巴碼)等。
國內推行使用的是EAN商品條形碼,可分為EAN-13(標準版)和EAN-8(縮短版)兩種。
例圖:
2.2 生成一維碼
以生成EAN-13碼製為例:
// 1.設定條形碼規格 EncodingOptions encodeOption = new EncodingOptions(); encodeOption.Height = 130; // 必須制定高度、寬度 encodeOption.Width = 240; // 2.生成條形碼圖片並儲存 ZXing.BarcodeWriter wr = new BarcodeWriter(); wr.Options = encodeOption; wr.Format = BarcodeFormat.EAN_13; // 條形碼規格:EAN13規格:12(無校驗位)或13位數字 Bitmap img = wr.Write(this.ContentTxt.Text); // 生成圖片 string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
2.3 讀取一維碼
以讀取EAN-13碼制的圖片為例:
// 1.設定讀取條形碼規格 DecodingOptions decodeOption = new DecodingOptions(); decodeOption.PossibleFormats = new List<BarcodeFormat>() { BarcodeFormat.EAN_13, }; // 2.進行讀取操作 ZXing.BarcodeReader br = new BarcodeReader(); br.Options = decodeOption; ZXing.Result rs = br.Decode(this.barCodeImg.Image as Bitmap); if (rs == null) { this.ContentTxt.Text = "讀取失敗"; MessageBox.Show("讀取失敗"); } else { this.ContentTxt.Text = rs.Text; MessageBox.Show("讀取成功,內容:" + rs.Text); }
3. 二維碼操作
3.1 介紹
二維碼:在水平和垂直方向的二維空間儲存資訊的條形碼。
常用碼制:PDF417、QR Code、Code 49、Code 16K、Code One等。
例圖:
3.2 生成二維碼
以生成QR碼製為例:
// 1.設定QR二維碼的規格 ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions(); qrEncodeOption.CharacterSet = "UTF-8"; // 設定編碼格式,否則讀取'中文'亂碼 qrEncodeOption.Height = 200; qrEncodeOption.Width = 200; qrEncodeOption.Margin = 1; // 設定周圍空白邊距 // 2.生成條形碼圖片並儲存 ZXing.BarcodeWriter wr = new BarcodeWriter(); wr.Format = BarcodeFormat.QR_CODE; // 二維碼 wr.Options = qrEncodeOption; Bitmap img = wr.Write(this.ContentTxt.Text); string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
3.3 讀取二維碼
以讀取QR碼制的圖片為例:
// 1.設定讀取條形碼規格 DecodingOptions decodeOption = new DecodingOptions(); decodeOption.PossibleFormats = new List<BarcodeFormat>() { BarcodeFormat.QR_CODE, ; // 2.進行讀取操作 ZXing.BarcodeReader br = new BarcodeReader(); br.Options = decodeOption; ZXing.Result rs = br.Decode(this.barCodeImg.Image as Bitmap); if (rs == null) { this.ContentTxt.Text = "讀取失敗"; MessageBox.Show("讀取失敗"); } else { this.ContentTxt.Text = rs.Text; MessageBox.Show("讀取成功,內容:" + rs.Text); }
3.4 生成帶Logo的二維碼
二維碼帶有校驗功能,故可以在中間區域展示一定尺寸的圖片。
例圖:
程式碼:
// 1.設定QR二維碼的規格 ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions(); qrEncodeOption.CharacterSet = "UTF-8"; // 設定編碼格式,否則讀取'中文'亂碼 qrEncodeOption.Height = 200; qrEncodeOption.Width = 200; qrEncodeOption.Margin = 1; // 設定周圍空白邊距 // 2.生成條形碼圖片 ZXing.BarcodeWriter wr = new BarcodeWriter(); wr.Format = BarcodeFormat.QR_CODE; // 二維碼 wr.Options = qrEncodeOption; Bitmap img = wr.Write(this.ContentTxt.Text); // 3.在二維碼的Bitmap物件上繪製logo圖片 Bitmap logoImg = Bitmap.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\logo.jpg") as Bitmap; Graphics g = Graphics.FromImage(img); Rectangle logoRec = new Rectangle(); // 設定logo圖片的大小和繪製位置 logoRec.Width = img.Width / 6; logoRec.Height = img.Height / 6; logoRec.X = img.Width / 2 - logoRec.Width / 2; // 中心點 logoRec.Y = img.Height / 2 - logoRec.Height / 2; g.DrawImage(logoImg, logoRec); // 4.儲存繪製後的圖片 string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + this.ContentTxt.Text + ".jpg"; img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
4. 原始碼下載
4.1 執行圖
4.2 下載地址
End 選單載入中...相關推薦
C# 條形碼操作【原始碼下載】
本篇介紹通過C#生成和讀取一維碼、二維碼的操作。 目錄 1. 介紹:介紹條形碼、條形碼的分類以及ZXing.Net類庫。 2. 一維碼操作:包含對一維碼的生成、讀取操作。 3. 二維碼操作:包含對二維碼的生成、讀取操作,以及生成帶Logo的二維碼。 4. 原始碼下載:展示執行圖及原始碼下載。
C# ini檔案操作【原始碼下載】
介紹C#如何對ini檔案進行讀寫操作,C#可以通過呼叫【kernel32.dll】檔案中的 WritePrivateProfileString()和GetPrivateProfileString()函式分別對ini檔案進行讀和寫操作。包括:讀取key的值、儲存key的值、讀取所有section、讀取所有k
C# Excel匯入、匯出【原始碼下載】
本篇主要介紹C#的Excel匯入、匯出。 目錄 1. 介紹:描述第三方類庫NPOI以及Excel結構 2. Excel匯入:介紹C#如何呼叫NPOI進行Excel匯入,包含:流程圖、NOPI以及C#程式碼 3. Excel匯出:介紹C#如何呼叫NPOI進行Excel匯出,包含:流程圖、NOPI以、
【原始碼下載】JIT指令碼引擎:CMinus 0.1版開放下載
說明:CMinus是一個讀入修改過語法的C源程式,然後編譯成x86指令集寫入記憶體,最後用__stdcall呼叫約定跟C++互相交流的指令碼引擎。目標:CMinus的定位是中間語言,用於將其他語言編譯到CMinus上,享受本地指令帶來的好處。進度:完成所有功能,但是由於指令集生成的演算法不好,打算
WinForm 天貓2013雙11自動搶紅包【原始碼下載】
1. 正確獲取紅包流程 2. 軟體介紹 2.1 效果圖: 2.2 功能介紹 2.2.1 賬號登入 頁面開始時,會載入這個網站:https://login.taobao.com/member/login.jhtml?redirect_url=http%3A%2F%2F1111.tmal
【原始碼剖析】Launcher 8.0 原始碼 26---使用者操作(3)拖拽模式之springload
接下來是第三種狀態,springloader模式,也是drag模式。 到此刻使用者的操作有3中,點選,滑動,長按。 點選是觸發onclick,滑動是GroupView自帶方法,而長按一種是進入overview或allapp模式,另外一種就是接下來學習的drag模式。
【原始碼剖析】Launcher 8.0 原始碼 25---使用者操作(2)模式切換
模式就是介面,除普通模式外,Launcher還有兩個特殊模式,分別是overView模式和Springloader模式。此處採用狀態模式這種設計模式,共有三個狀態。 overView模式是長按桌面空白處,出現特殊功能,比如設定桌布,新增widget,特殊設定(橫屏開關
Web 開發中很實用的10個效果【附原始碼下載】
在工作中,我們可能會用到各種互動效果。而這些效果在平常翻看文章的時候碰到很多,但是一時半會又想不起來在哪,所以養成知識整理的習慣是很有必要的。這篇文章給大家推薦10個在 Web 開發中很有用的效果,記得收藏! 超炫的頁面切換動畫效果 今天我們想與大家分享一組創意的頁面切換熊效果集合。我們已經在示例
【原始碼剖析】tinyhttpd —— C 語言實現最簡單的 HTTP 伺服器
tinyhttpd 是一個不到 500 行的超輕量型 Http Server,用來學習非常不錯,可以幫助我們真正理解伺服器程式的本質。 看完所有原始碼,真的感覺有很大收穫,無論是 unix 的程式設計,還是 GET/POST 的 Web 處理流程
【提供原始碼下載】使用Mybatis-Generator自動生成Dao、Model、Mapping相關檔案
其實這個沒什麼,但是能大大加快我們的開發速度。 只需要把一個配置檔案配置好就行, <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//my
【皇冠體育原始碼下載】Sinon
前端測試存在的問題在講Sinon之前皇冠體育原始碼下載dsluntan.com 企娥3393756370皇冠體育原始碼下載,我們得先講一下在學習了Mocha、chai以及enzyme之後,我們的前端測試還存在的一些問題。比如前臺測試需要與後臺互動,獲取後臺資料後再根據相應資料
【PDF下載】C++標準程序庫 PDF下載
pdf http 資源 ++ ansi class 出版 算法 以及 網盤下載:c++標準程序庫 pdf 下載 – 易分享電子書PDF資源網 作者: [德] Nicolai M·Josuttis 出版社: 華中科技大學出版社
MySQL數據庫操作【SQL使用】
搜索 rop after 人物 order 安全 包括 成了 格式 核心目標:學好增刪改查,寫啥業務都不怕! 一、理解數據庫及其作用 1、數據庫的五個基本單位1)數據庫服務器2)數據庫3)數據表4)數據字段5)數據行 2、詳解這五個基本單位1)數據庫服務器。是指用來運行數據
【資源下載】分享個嵌入式開發的入門教程(包含視頻)
gpt water term href jsb sdn ast csdn gravity 基於ARM A17的嵌入式開發的入門開發教程,有興趣的朋友可下載或者在線觀看 開發教程:http://wiki.t-firefly.com 視頻教程:https://pan.baid
(第三場) C Shuffle Cards 【STL_rope || splay】
rop nes struct ref lose can done this printf 題目鏈接:https://www.nowcoder.com/acm/contest/141/C 題目描述 Eddy likes to play cards game since t
【原始碼分享】簡訊驗證碼如何對接 WordPressv4.0,簡訊外掛
對接簡訊的時候發現一家簡訊公司,有些不錯的簡訊驗證碼的外掛,對接起來挺方便的,有需求的可以看一下。http://www.ihuyi.com/外掛說明本外掛系互億無線針對Wordpress開發,請按以下說明進行安裝,外掛內的所有檔案均為對原檔案的修改,如果你的系統經過二次開發,安裝本外掛之前,請仔細核對修改。
【原始碼剖析】threadpool —— 基於 pthread 實現的簡單執行緒池
部落格新地址:https://github.com/AngryHacker/articles/issues/1#issue-369867252 執行緒池介紹 執行緒池可以說是專案中經常會用到的元件,在這裡假設讀者都有一定的多執行緒基礎,如果沒有的話不妨在這裡進行了解:POSIX
【原始碼剖析】MemoryPool —— 簡單高效的記憶體池 allocator 實現
什麼是記憶體池?什麼是 C++ 的 allocator? 記憶體池簡單說,是為了減少頻繁使用 malloc/free new/delete 等系統呼叫而造成的效能損耗而設計的。當我們的程式需要頻繁地申請和釋放
【原始碼剖析】Webbench —— 簡潔而優美的壓力測試工具
Webbench 是一個古老而著名的網站壓力測試工具,簡單而實用。如果你不清楚你的網站能承受多大的壓力,或者你想分析對比兩個網站的效能,webbench 再好用不過了。 Gitbub 地址:點我  
【原始碼剖析】tornado-memcached-sessions —— Tornado session 支援的實現(三)
新地址:https://github.com/AngryHacker/articles/issues/5#issue-372211594 童鞋,我就知道你是個好學滴好孩子~來吧,讓我們進行最後的探(zuo)索(si)!