效果圖:git
先給以前的羣友道個歉,說聲很差意思。QRCoder 只支持二維碼,沒有條形碼。github
以上demo生成條形碼是用 BarcodeLib 這個庫,識別是用 zxing,二維碼生成用 QRCoder,識別也用 zxing。其實原本不想用 zxing 這個庫的。可是 BarcodeLib 只能生成條形碼,不能讀取條形碼,QRCoder只能生成二維碼,不能讀取二維碼。因此就用到了 zxing 這個庫。spa
BarcodeLib 和 QRCoder 都是開源項目。.net
這兩個庫有什麼優勢:code
一、沒有第三方依賴項。blog
二、使用簡單。get
三、速度相對比較快。it
固然缺點也很明顯,不能識別條形碼/二維碼。io
這兩個庫均可以使用 nuget 添加到你的項目中。class
BarcodeLib 生成條形碼核心代碼:
BarcodeLib.Barcode b = new BarcodeLib.Barcode(); Image img = b.Encode(BarcodeLib.TYPE.UPCA, "038000356216", Color.Black, Color.White, 290, 120);
QRCoder 生成二維碼核心代碼:
QRCodeGenerator qrGenerator = new QRCodeGenerator(); QRCodeData qrCodeData = qrGenerator.CreateQrCode("The text which should be encoded.", QRCodeGenerator.ECCLevel.Q); QRCode qrCode = new QRCode(qrCodeData); Bitmap qrCodeImage = qrCode.GetGraphic(20);
以上核心代碼很簡單,實際上是我從 git 裏面拷貝貼過來的。可是要比較靈活的使用,就須要本身進行一個簡單的封裝。
讀取條形碼和二維碼我都是使用了 zxing 這個庫。
zxing 這個庫就比較強大了,既能生成條形碼/二維碼還能識別條形碼/二維碼,還能生成pdf,並且適用於多個平臺。這些在 git 項目介紹就有說明。
條形碼識別代碼:
BarcodeReader reader = new BarcodeReader(); Bitmap bitmap = new Bitmap(picBarCode.BackgroundImage); Result result = reader.Decode(bitmap); // result.Text 就是條形碼的內容
二維碼識別代碼:
BarcodeReader reader = new BarcodeReader(); reader.Options.CharacterSet = "UTF-8"; Bitmap bitmap = new Bitmap(picQRCode.BackgroundImage); Result result = reader.Decode(bitmap); // result.Text 就是二維碼的內容
使用 nuget 將 zxing 這個庫添加到本身項目中。
zxing 這個庫功能比較強大。若是須要更多的功能以及適應更多平臺能夠考慮使用zxing。
完整 demo