1. 程式人生 > >C#呼叫ThoughtWorks.QRCode.dll生成帶引數二維碼

C#呼叫ThoughtWorks.QRCode.dll生成帶引數二維碼

ThoughtWorks.QRCode.Codec.QRCodeEncoder encoder = new QRCodeEncoder();
        encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//編碼方式(注意:BYTE能支援中文,ALPHA_NUMERIC掃描出來的都是數字)
        encoder.QRCodeScale = 4;//大小(值越大生成的二維碼圖片畫素越高)
         encoder.QRCodeVersion = 0;//版本(注意:設定為0主要是防止編碼的字串太長時發生錯誤)
         encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//錯誤效驗、錯誤更正(有4個等級)

  String qrdata = "二維碼資訊";
System.Drawing.Bitmap bp = encoder.Encode(qrdata.ToString(), Encoding.GetEncoding("GB2312"));
            Image image = bp;
            pictureBox1.Image = bp;
儲存二維碼圖片:
SaveFileDialog sf = new SaveFileDialog();
            sf.Title = "選擇儲存檔案位置";
            sf.Filter = "儲存圖片(*.jpg) |*.jpg|所有檔案(*.*) |*.*";

            //設定預設檔案型別顯示順序
            sf.FilterIndex = 1;
            //儲存對話方塊是否記憶上次開啟的目錄
            sf.RestoreDirectory = true;
            if (sf.ShowDialog() == DialogResult.OK)
            {
                Image im = this.pictureBox1.Image;
                //獲得檔案路徑
                string localFilePath = sf.FileName.ToString();

                if (sf.FileName != "")
                {
                   string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1);//獲取檔名,不帶路徑
                   // newFileName = fileNameExt+DateTime.Now.ToString("yyyyMMdd")  ;//給檔名後加上時間
                   string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf("."));  //獲取檔案路徑,帶檔名,不帶字尾
                    string fn = sf.FileName;
                    pictureBox1.Image.Save(FilePath +"-"+ DateTime.Now.ToString("yyyyMMdd") + ".jpg");

                }
}
 //解析二維碼資訊
  // QRCodeDecoder decoder = new QRCodeDecoder();
  //  String decodedString = decoder.decode(new QRCodeBitmapImage(new Bitmap(pictureBox1.Image)));
   //this.label3.Text = decodedString;