效果圖:
先給之前的群友道個歉,說聲不好意思。QRCoder 只支持二維碼,沒有條形碼。
以上demo生成條形碼是用 BarcodeLib 這個庫,識別是用 zxing,二維碼生成用 QRCoder,識別也用 zxing。其實本來不想用 zxing 這個庫的。但是 BarcodeLib 只能生成條形碼,不能讀取條形碼,QRCoder只能生成二維碼,不能讀取二維碼。所以就用到了 zxing 這個庫。
BarcodeLib 和 QRCoder 都是開源項目。
這兩個庫有什么優點:
1、沒有第三方依賴項。
2、使用簡單。
3、速度相對比較快。
當然缺點也很明顯,不能識別條形碼/二維碼。
這兩個庫都可以使用 nuget 添加到你的項目中。
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