栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#如何用ThoughtWorks生成二维码

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#如何用ThoughtWorks生成二维码

       在现在的项目中,较多的使用到二维码,前面介绍过一篇使用Gma生成二维码的操作,现在介绍一个第三方组件,主要介绍生成二维码,二维码的解析,以及对二维码的相关信息的选择,现在介绍ThoughtWorks用于生成二维码,本随笔采用.net4.5和C#6.0语法,也可以进行查看ThoughtWorks的底层源码。

1.生成二维码:

    /// 
    /// 生成二维码
    /// 
    /// 带生成二维码的字符串
    /// 路径
    /// 
    public static string CreatehoughtWorksQrCode(string content, string path)
    {
      if (string.IsNullOrEmpty(content))
      {
 throw new ArgumentNullException(content);
      }
      if (string.IsNullOrEmpty(path))
      {
 throw new ArgumentNullException(path);
      }
      var qrCodeEncoder = new QRCodeEncoder
      {
 QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE,
 QRCodeScale = 4,
 QRCodeVersion = 8,
 QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M
      };
      Image image = qrCodeEncoder.Encode(content);
      var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
      var filepath = string.Format("{0}{1}", path, filename);
      FileStream fs = null;
      try
      {
 fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
 image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
      }
      catch (IOException ex)
      {
 throw new IOException(ex.Message);
      }
      finally
      {
 if (fs != null) fs.Close();
 image.Dispose();
      }
      return CodeDecoder(filepath);
    }

2.解析二维码:

    /// 
    /// 二维码解码
    /// 
    /// 图片路径
    /// 
    public static string CodeDecoder(string filePath)
    {
      if (string.IsNullOrEmpty(filePath))
      {
 throw new ArgumentNullException(filePath);
      }
      try
      {
 if (!System.IO.File.Exists(filePath))
   return null;
 var myBitmap = new Bitmap(Image.FromFile(filePath));
 var decoder = new QRCodeDecoder();
 var decodedString = decoder.decode(new QRCodeBitmapImage(myBitmap));
 return decodedString;
      }
      catch (Exception ex)
      {
 throw new Exception(ex.Message);
      }
    }

3.选择生成的二维码参数:

    /// 
    /// 选择生成二维码的相关类型
    /// 要生成的文字或者数字,支持中文。如: "4408810820 深圳-广州" 或者:4444444444
    /// 三种尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC
    /// 大小:L M Q H
    /// 版本:如 8
    /// 比例:如 4
    /// 
    /// 
    public void CreateCode_Choose(string strData, string qrEncoding, string level, int version, int scale)
    {
      var qrCodeEncoder = new QRCodeEncoder();
      var encoding = qrEncoding;
      switch (encoding)
      {
 case "Byte":
   qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
   break;
 case "AlphaNumeric":
   qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC;
   break;
 case "Numeric":
   qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC;
   break;
 default:
   qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
   break;
      }

      qrCodeEncoder.QRCodeScale = scale;
      qrCodeEncoder.QRCodeVersion = version;
      switch (level)
      {
 case "L":
   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;
   break;
 case "M":
   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
   break;
 case "Q":
   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q;
   break;
 default:
   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H;
   break;
      }
      Image image = null;
      FileStream fs = null;
      try
      {
 //文字生成图片
 image = qrCodeEncoder.Encode(strData);
 var filename = DateTime.Now.ToString("yyyymmddhhmmssfff") + ".jpg";
 var filepath = HttpContext.Current.Server.MapPath(@"~Upload") + "\" + filename;
 fs = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write);
 image.Save(fs, System.Drawing.Imaging.ImageFormat.Jpeg);
      }
      catch (IOException ex)
      {
 throw new IOException(ex.Message);
      }
      finally
      {
 if (fs != null) fs.Close();
 if (image != null) image.Dispose();
      }
    }

以上就是C#如何用ThoughtWorks生成二维码的详细内容,更多关于c#生成二维码的资料请关注考高分网其它相关文章!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/121873.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号