C鶼はどうやってThoughtWorksで二次元コードを生成しますか?
5681 ワード
現在のプロジェクトでは、二次元コードに多く使われています。Gmaを使って二次元コードを生成する操作を紹介しました。ここでは、二次元コード、二次元コードの解析、二次元コードに関する情報の選択を紹介します。Thought Worksの下のソースコードも確認できます。
1.二次元コードを生成する:
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.生成した二次元コードパラメータを選択します。
/// <summary>
///
/// <param name="strData"> , 。 : "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を使って二次元コードを生成するかの詳細です。もっと多いのはcxiについて二次元コードを生成する資料です。他の関連記事に注目してください。