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

    一.ZXing.Net 源代码地址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的二维码(二)

  • 相关阅读:
    动态生成 Excel 文件供浏览器下载的注意事项
    JavaEE 中无用技术之 JNDI
    CSDN 泄露用户密码给我们什么启示
    刚发布新的 web 单点登录系统,欢迎下载试用,欢迎提建议
    jQuery jqgrid 对含特殊字符 json 数据的 Java 处理方法
    一个 SQL 同时验证帐号是否存在、密码是否正确
    PostgreSQL 数据库在 Windows Server 2008 上安装注意事项
    快速点评 Spring Struts Hibernate
    Apache NIO 框架 Mina 使用中出现 too many open files 问题的解决办法
    解决 jQuery 版本升级过程中出现 toLowerCase 错误 更改 doctype
  • 原文地址:https://www.cnblogs.com/Alex80/p/6860440.html
Copyright © 2011-2022 走看看