C#运用QRCode生成二维码
在现在的项目中,较多的使用到二维码,现在介绍一个第三方组件,用于生成二维码。
生成二维码:
///<summary>///生成二维码///</summary>///<paramname="content">带生成二维码的字符串</param>///<paramname="path">路径</param>///<returns></returns>publicstaticstringCreatehoughtWorksQrCode(stringcontent,stringpath){if(string.IsNullOrEmpty(content)){thrownewArgumentNullException(content);}if(string.IsNullOrEmpty(path)){thrownewArgumentNullException(path);}varqrCodeEncoder=newQRCodeEncoder{QRCodeEncodeMode=QRCodeEncoder.ENCODE_MODE.BYTE,QRCodeScale=4,QRCodeVersion=8,QRCodeErrorCorrect=QRCodeEncoder.ERROR_CORRECTION.M};Imagep_w_picpath=qrCodeEncoder.Encode(content);varfilename=DateTime.Now.ToString("yyyymmddhhmmssfff")+".jpg";varfilepath=string.Format("{0}{1}",path,filename);FileStreamfs=null;try{fs=newFileStream(filepath,FileMode.OpenOrCreate,FileAccess.Write);p_w_picpath.Save(fs,System.Drawing.Imaging.ImageFormat.Jpeg);}catch(IOExceptionex){thrownewIOException(ex.Message);}finally{if(fs!=null)fs.Close();p_w_picpath.Dispose();}returnCodeDecoder(filepath);}
2.解析二维码:
///<summary>///二维码解码///</summary>///<paramname="filePath">图片路径</param>///<returns></returns>publicstaticstringCodeDecoder(stringfilePath){if(string.IsNullOrEmpty(filePath)){thrownewArgumentNullException(filePath);}try{if(!System.IO.File.Exists(filePath))returnnull;varmyBitmap=newBitmap(Image.FromFile(filePath));vardecoder=newQRCodeDecoder();vardecodedString=decoder.decode(newQRCodeBitmapImage(myBitmap));returndecodedString;}catch(Exceptionex){thrownewException(ex.Message);}}
3.选择生成的二维码参数:
///<summary>///选择生成二维码的相关类型///<paramname="strData">要生成的文字或者数字,支持中文。如:"4408810820深圳-广州"或者:4444444444</param>///<paramname="qrEncoding">三种尺寸:BYTE,ALPHA_NUMERIC,NUMERIC</param>///<paramname="level">大小:LMQH</param>///<paramname="version">版本:如8</param>///<paramname="scale">比例:如4</param>///<returns></returns>///</summary>publicvoidCreateCode_Choose(stringstrData,stringqrEncoding,stringlevel,intversion,intscale){varqrCodeEncoder=newQRCodeEncoder();varencoding=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;}Imagep_w_picpath=null;FileStreamfs=null;try{//文字生成图片p_w_picpath=qrCodeEncoder.Encode(strData);varfilename=DateTime.Now.ToString("yyyymmddhhmmssfff")+".jpg";varfilepath=HttpContext.Current.Server.MapPath(@"~\Upload")+"\\"+filename;fs=newFileStream(filepath,FileMode.OpenOrCreate,FileAccess.Write);p_w_picpath.Save(fs,System.Drawing.Imaging.ImageFormat.Jpeg);}catch(IOExceptionex){thrownewIOException(ex.Message);}finally{if(fs!=null)fs.Close();if(p_w_picpath!=null)p_w_picpath.Dispose();}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。