zoukankan      html  css  js  c++  java
  • C# 二维码/条形码入门操作

    效果图:

    先给之前的群友道个歉,说声不好意思。QRCoder 只支持二维码,没有条形码。

    以上demo生成条形码是用 BarcodeLib 这个库,识别是用 zxing,二维码生成用 QRCoder,识别也用 zxing。其实本来不想用 zxing 这个库的。但是 BarcodeLib 只能生成条形码,不能读取条形码,QRCoder只能生成二维码,不能读取二维码。所以就用到了 zxing 这个库。

    BarcodeLibQRCoder 都是开源项目。

    这两个库有什么优点:

    1、没有第三方依赖项。

    2、使用简单。

    3、速度相对比较快。

    当然缺点也很明显,不能识别条形码/二维码。

    这两个库都可以使用 nuget 添加到你的项目中。

    BarcodeLib

    QRCoder

    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

    源代码

  • 相关阅读:
    【基础算法】- 全排列
    【基础算法】- 2分查找
    区块链培训
    Static Binding (Early Binding) vs Dynamic Binding (Late Binding)
    test
    No data is deployed on the contract address!
    "throw" is deprecated in favour of "revert()", "require()" and "assert()".
    Variable is declared as a storage pointer. Use an explicit "storage" keyword to silence this warning.
    京都行
    Failed to write genesis block: database already contains an incompatible
  • 原文地址:https://www.cnblogs.com/hjsstudio/p/9848325.html
Copyright © 2011-2022 走看看