C#如何用ThoughtWorks生成二維碼
更新時間:2020年08月06日 14:21:28 作者:彭澤0902
這篇文章主要介紹了C#如何用ThoughtWorks生成二維碼,文中講解非常細致,幫助大家更好的理解和學習,感興趣的朋友可以了解下
在現(xiàn)在的項目中,較多的使用到二維碼,前面介紹過一篇使用Gma生成二維碼的操作,現(xiàn)在介紹一個第三方組件,主要介紹生成二維碼,二維碼的解析,以及對二維碼的相關信息的選擇,現(xiàn)在介紹ThoughtWorks用于生成二維碼,本隨筆采用.net4.5和C#6.0語法,也可以進行查看ThoughtWorks的底層源碼。
1.生成二維碼:
/// <summary>
/// 生成二維碼
/// </summary>
/// <param name="content">帶生成二維碼的字符串</param>
/// <param name="path">路徑</param>
/// <returns></returns>
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.解析二維碼:
/// <summary>
/// 二維碼解碼
/// </summary>
/// <param name="filePath">圖片路徑</param>
/// <returns></returns>
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.選擇生成的二維碼參數(shù):
/// <summary>
/// 選擇生成二維碼的相關類型
/// <param name="strData">要生成的文字或者數(shù)字,支持中文。如: "4408810820 深圳-廣州" 或者:4444444444</param>
/// <param name="qrEncoding">三種尺寸:BYTE ,ALPHA_NUMERIC,NUMERIC</param>
/// <param name="level">大小:L M Q H</param>
/// <param name="version">版本:如 8</param>
/// <param name="scale">比例:如 4</param>
/// <returns></returns>
/// </summary>
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生成二維碼的詳細內(nèi)容,更多關于c#生成二維碼的資料請關注腳本之家其它相關文章!
相關文章
Windows窗體的.Net框架繪圖技術實現(xiàn)方法
這篇文章主要介紹了Windows窗體的.Net框架繪圖技術實現(xiàn)方法,非常實用,需要的朋友可以參考下2014-08-08
C#自動創(chuàng)建數(shù)據(jù)庫實現(xiàn)代碼
C#下創(chuàng)建數(shù)據(jù)庫的代碼2008-03-03

