1. 程式人生 > 其它 >二維碼生成與解析

二維碼生成與解析

        #region 二維碼
        int i = 2;
        /// <summary>
        /// 生成二維碼
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnProduct_Click(object sender, EventArgs e)
        {
            ThoughtWorks.QRCode.Codec.QRCodeEncoder endocder 
= new ThoughtWorks.QRCode.Codec.QRCodeEncoder(); //二維碼背景顏色 endocder.QRCodeBackgroundColor = System.Drawing.Color.White; //二維碼編碼方式 endocder.QRCodeEncodeMode = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ENCODE_MODE.BYTE; //每個小方格的寬度 endocder.QRCodeScale = 4
; //二維碼版本號 endocder.QRCodeVersion = 5;//控制版本,不同版本,顯示出來的樣式不一樣 //糾錯等級 endocder.QRCodeErrorCorrect = ThoughtWorks.QRCode.Codec.QRCodeEncoder.ERROR_CORRECTION.M; var person = new { Id = ++i, Name = "wolfy", Gender = 1, Age = 24 + ++i }; //將json川做成二維碼
using (Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8)) { //Bitmap bitmap = endocder.Encode(new JavaScriptSerializer().Serialize(person), System.Text.Encoding.UTF8); var strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode{i}.jpg"); strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg"); if (!Directory.Exists(Path.GetDirectoryName(strSavePath))) { Directory.CreateDirectory(strSavePath); } //System.Runtime.InteropServices.ExternalException: // 使用錯誤的影象格式儲存影象。 - 或 - 影象已儲存到同一檔案從建立它。出現一般都是儲存路經問題,或者aspnet中是讀寫檔案許可權問題 bitmap.Save(strSavePath, System.Drawing.Imaging.ImageFormat.Jpeg); pbxPicture.SizeMode = PictureBoxSizeMode.Zoom; //pbxQRCode.Image = Bitmap.FromHbitmap(bitmap.GetHbitmap()); //第一種繪圖 IntPtr hBitmap = bitmap.GetHbitmap(); pbxQRCode.Image = Bitmap.FromHbitmap(hBitmap); //pbxQRCode.Image.Save(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); DeleteObject(hBitmap); bitmap.Dispose(); //第二種繪圖 //Graphics graphics = Graphics.FromImage(bitmap); //graphics.Clear(Color.White); ////再bitmap上繪圖 //graphics.DrawImage(new Bitmap(""), new PointF(0, 0)); //graphics.Dispose(); } //解密二維碼 //ThoughtWorks.QRCode.Codec.QRCodeDecoder qRCodeDecoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder(); //var decoderResult = qRCodeDecoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(new Bitmap(strSavePath))); } /// <summary> /// 解密二維碼 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnConsume_Click(object sender, EventArgs e) { var strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode{i}.jpg"); strSavePath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"QRCode.jpg"); ThoughtWorks.QRCode.Codec.QRCodeDecoder qRCodeDecoder = new ThoughtWorks.QRCode.Codec.QRCodeDecoder(); var decoderResult = qRCodeDecoder.decode(new ThoughtWorks.QRCode.Codec.Data.QRCodeBitmapImage(new Bitmap(strSavePath))); lblTakephotoSavePath.Text = $"二維碼:{decoderResult}"; } #endregion
龍騰一族至尊龍騎