C鶼はどうやってThoughtWorksで二次元コードを生成しますか?


現在のプロジェクトでは、二次元コードに多く使われています。Gmaを使って二次元コードを生成する操作を紹介しました。ここでは、二次元コード、二次元コードの解析、二次元コードに関する情報の選択を紹介します。Thought Worksの下のソースコードも確認できます。
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について二次元コードを生成する資料です。他の関連記事に注目してください。