1. 程式人生 > >C# 條形碼操作【原始碼下載】

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)!