介绍
小编给大家分享一下c#用ThoughtWorks生成二维码的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
,,,,,,在现在的项目中,较多的使用到二维码,前面介绍过一篇使用Gma生成二维码的操作,现在介绍一个第三方组件,主要介绍生成二维码,二维码的解析,以及对二维码的相关信息的选择,现在介绍ThoughtWorks用于生成二维码,本随笔采用.net4.5和c# 6.0语法,也可以进行查看ThoughtWorks的底层源码。
<强> 1。生成二维码:强>
///& lt; summary>///生成二维码///& lt;/summary>///& lt;参数name=癱ontent"在带生成二维码的字符串& lt;/param>///& lt;参数name=皃ath"在路径& lt;/param>///& lt; returns> & lt;/returns> CreatehoughtWorksQrCode公共静态字符串(字符串内容,字符串路径) { 如果(string.IsNullOrEmpty(内容)) { 把新ArgumentNullException(内容); } 如果(string.IsNullOrEmpty(路径)) { 把新ArgumentNullException(路径); } 新qrCodeEncoder var qrCodeEncoder={ QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeScale=4, QRCodeVersion=8, QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.M }; 图像图像=qrCodeEncoder.Encode(内容); var=DateTime.Now.ToString文件名(“yyyymmddhhmmssfff") +“.jpg"; var filepath=string.Format(“{0}{1}“,路径,文件名); 文件流fs=零; 试一试 { fs=新文件流(filepath FileMode。OpenOrCreate FileAccess.Write); 的形象。保存(fs, System.Drawing.Imaging.ImageFormat.Jpeg); } 抓住(IOException)交货 { 把新IOException (ex.Message); } 最后 { 如果(fs !=null) fs.Close (); image.Dispose (); } 返回CodeDecoder (filepath); }
<强> 2。解析二维码:强>
///& lt; summary>///二维码解码///& lt;/summary>///& lt;参数name=癴ilePath"在图片路径& lt;/param>///& lt; returns> & lt;/returns> filePath CodeDecoder公共静态字符串(字符串) { 如果(string.IsNullOrEmpty (filePath)) { 把新ArgumentNullException (filePath); } 试一试 { 如果(! System.IO.File.Exists (filePath)) 返回null; var myBitmap=新的位图(Image.FromFile (filePath)); var解码器=new QRCodeDecoder (); var decodedString=decoder.decode(新QRCodeBitmapImage (myBitmap)); 返回decodedString; } 捕获(异常交货) { 抛出新的异常(ex.Message); } }
<强> 3。选择生成的二维码参数:强>
///& lt; summary>///选择生成二维码的相关类型///& lt;参数name=皊trData"在要生成的文字或者数字,支持中文。如:“4408810820深圳——广州“;或者:4444444444 & lt;/param>///& lt;参数name=皅rEncoding"在三种尺寸:字节,ALPHA_NUMERIC, NUMERIC///& lt;参数name=發evel"在大小:L M Q H///& lt;参数name=皏ersion"祝辞版本:如8 & lt;/param>///& lt;参数name=皊cale"在比例:如4 & lt;/param>///& lt; returns> & lt;/returns>///& lt;/summary> qrEncoding strData公共空CreateCode_Choose(字符串,字符串,字符串,整数版本,int规模) { var qrCodeEncoder=new qrCodeEncoder (); var编码=qrEncoding; 开关(编码) { 例“Byte": qrCodeEncoder。QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.BYTE; 打破; 例“AlphaNumeric": qrCodeEncoder。QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC; 打破; 例“Numeric": qrCodeEncoder。QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.NUMERIC; 打破; 默认值: qrCodeEncoder。QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.BYTE; 打破; } qrCodeEncoder。QRCodeScale=规模; qrCodeEncoder。QRCodeVersion=版本; 开关(高度) { 例“L": qrCodeEncoder。QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.L; 打破; 例“M": qrCodeEncoder。QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.M; 打破; 例“Q": qrCodeEncoder。QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.Q; 打破; 默认值: qrCodeEncoder。QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.H; 打破; } 图像图像=零; 文件流fs=零; 试一试 {//文字生成图片 形象=qrCodeEncoder.Encode (strData); var=DateTime.Now.ToString文件名(“yyyymmddhhmmssfff") +“.jpg"; var filepath=HttpContext.Current.Server.MapPath (@" ~ \ Upload") +“\ \”;+文件名; fs=新文件流(filepath FileMode。OpenOrCreate FileAccess.Write); 的形象。保存(fs, System.Drawing.Imaging.ImageFormat.Jpeg); } 抓住(IOException)交货 { 把新IOException (ex.Message); } 最后 { 如果(fs !=null) fs.Close (); 如果(形象!=null) image.Dispose (); } }c#用ThoughtWorks生成二维码的方法