zoukankan      html  css  js  c++  java
  • C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(一)

    一.ZXing.Net

    源代码地址https://github.com/zxing/zxing

    http://zxingnet.codeplex.com/

    也可以使用Nuget包管理,添加如图:

    说明:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。现在也有了对应的.Net版本

    二、生成二维码

    将字符编码时可以指定字符格式;默认为ISO-8859-1英文字符集,但一般移动设备常用UTF-8字符集编码,

    可以通过QrCodeEncodingOptions设置编码方式。

    如果要生成其他zxing支持的条形码,只要修改BarcodeWriter.Format就可以了。

    /// <summary>
    /// 生成二维码,保存成图片
    /// </summary>
    static void Generate1(string text)
    {
        BarcodeWriter writer = new BarcodeWriter();
        writer.Format = BarcodeFormat.QR_CODE;
        QrCodeEncodingOptions options = new QrCodeEncodingOptions();
        options.DisableECI = true;
        //设置内容编码
        options.CharacterSet = "UTF-8";
        //设置二维码的宽度和高度
        options.Width = 500;
        options.Height = 500;
        //设置二维码的边距,单位不是固定像素
        options.Margin = 1;
        writer.Options = options;
    
        Bitmap map = writer.Write(text);
        string filename = @"H:桌面截图generate1.png";
        map.Save(filename, ImageFormat.Png);
        map.Dispose();
    }
    //生成二维码 
    Generate1("https://www.baidu.com/");
    Generate1("ionic是一个强大的混合式/hybrid HTML5移动开发框架,特点是使用标准的HTML、CSS和JavaScript,开发跨平台的应用 ,只需要几步就可以快速创建您的Ionic应用,创建应用从这里开始");

    三、生成条形码

    static void Generate2(string text)
    {
        BarcodeWriter writer = new BarcodeWriter();
        //使用ITF 格式,不能被现在常用的支付宝、微信扫出来
        //如果想生成可识别的可以使用 CODE_128 格式
        //writer.Format = BarcodeFormat.ITF;
        writer.Format = BarcodeFormat.CODE_128;
        EncodingOptions options = new EncodingOptions()
        {
            Width = 150,
            Height =50,
            Margin=2
        };
        writer.Options = options;
        Bitmap map = writer.Write(text);
        string filename = @"H:桌面截图generate2.png";
        map.Save(filename, ImageFormat.Png);
    }
    //生成条形码
    Generate2("1234567890");
    //错误说明
    //只支持数字
    Requested contents should only contain digits, but got 'i'
    //只支持偶数个
    The lenght of the input should be even
    //最大长度80
    Requested contents should be less than 80 digits long, but got 102

    三、识别二维码/条形码

    /// <summary>
    /// 读取二维码
    /// 读取失败,返回空字符串
    /// </summary>
    /// <param name="filename">指定二维码图片位置</param>
    static string Read1(string filename)
    {
        BarcodeReader reader = new BarcodeReader();
        reader.Options.CharacterSet = "UTF-8";
        Bitmap map = new Bitmap(filename);
        Result result = reader.Decode(map);
        return result == null ? "" : result.Text;
    }
    //1.读取二维码内容
    //读取字母成功
    //string filename = @"H:桌面截图url.png";
    //string filename = @"H:桌面截图weibo.png";
    //string filename = @"H:桌面截图qrcode1.png";
    //string filename = @"H:桌面截图qrcode2.png";
    //string filename = @"H:桌面截图qrcode3.png";
    //对于有logo的二维码只返回字符串内容
    //string filename = @"H:桌面截图qrcode4.png";
    //string filename = @"H:桌面截图qrcode5.png";
    //string filename = @"H:桌面截图qrcode6.png";
    //识别条形码
    string filename = @"H:桌面截图generate2.png";
    string result = Read1(filename);
    Console.WriteLine(result);

    Demo源代码:http://git.oschina.net/tiama3798/QrCodeTool/tree/StudyDemo1/

    更多:

    C# ZXing.Net生成二维码、识别二维码、生成带Logo的二维码(二)

  • 相关阅读:
    OpenCV实现基于傅里叶变换的旋转文本校正
    【来龙去脉系列】QRCode二维码的生成细节和原理
    软件License设计
    常见加密算法简析
    【来龙去脉系列】RSA算法原理
    单目相机标定原理
    CYQ.Data 支持 PostgreSQL 数据库
    ASP.NET Aries 高级开发教程:主题样式及多语言(标签化控制)
    ASP.NET Aries 高级开发教程:Excel导入之代码编写(番外篇)
    ASP.NET Aries 高级开发教程:Excel导入配置之规则说明(下)
  • 原文地址:https://www.cnblogs.com/tianma3798/p/5426869.html
Copyright © 2011-2022 走看看