1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading.Tasks; 9 using System.Windows.Forms; 10 using ThoughtWorks.QRCode.Codec;//引用ThoughtWorks.QRcode.Codec二維碼生成類 11 12 using ThoughtWorks.QRCode.Codec.Data;//引用ThoughtWorks.QRCode.Codec.Data;二維碼識別類 13 namespace 生成二維碼 14 { 15 public partial class Form1 : Form 16 { 17 public Form1() 18 { 19 InitializeComponent(); 20 } 21 22 Image image; 23 24 private void button1_Click(object sender, EventArgs e) 25 { 26 27 //聲明一個 QRCodeEncoder 類實例 28 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); 29 30 //設置編碼方式 將其設置為字節編碼(還有兩種編碼方式),現在的流行的普遍的二維碼都是字節編碼。 31 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; 32 33 //設置二維碼的大小 34 qrCodeEncoder.QRCodeScale = 5; 35 //設置二維碼的版本 36 qrCodeEncoder.QRCodeVersion = 7; 37 //設置錯誤校驗(錯誤更正)的級別,這里設置為中等,一共有四個級別 38 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; 39 //設置要生成二維碼的字 40 string str = textBox1.Text.ToString().Trim(); 41 //編碼並賦處理成位圖數據 42 System.Drawing.Bitmap bp = qrCodeEncoder.Encode(str.ToString()); 43 //將位圖數據賦給圖片類 44 image = bp; 45 //將圖片賦給控件,用於顯示出來 46 pictureBox1.Image = image; 47 48 } 49 50 private void button2_Click(object sender, EventArgs e) 51 { 52 //實例化一個保存對話框 53 SaveFileDialog sf = new SaveFileDialog(); 54 sf.Title = "選擇保存的位置"; 55 sf.Filter = "保存圖片(*.jpg)|*.jpg|所有文件(*)|*.*"; 56 //設置默認文件類型顯示順序 57 sf.FilterIndex = 1; 58 //保存對話框是否記憶上次打開的目錄 59 sf.RestoreDirectory = true; 60 if (sf.ShowDialog() == DialogResult.OK) 61 { 62 63 Image im = this.pictureBox1.Image; 64 //獲取文件路徑 65 string localFilePath = sf.FileName.ToString(); 66 //當文件保存路徑不為空時 67 if (sf.FileName != "") 68 { 69 //獲取文件名,不帶路徑 70 string fileNameExt = localFilePath.Substring(localFilePath.LastIndexOf("\\") + 1); 71 string FilePath = localFilePath.Substring(0, localFilePath.LastIndexOf(".")); //獲取文件路徑,帶文件名,不帶后綴 72 string fn = sf.FileName; 73 pictureBox1.Image.Save(FilePath + "-" + DateTime.Now.ToString("yyyyMMdd") + ".jpg"); 74 MessageBox.Show("保存成功!"); 75 76 } 77 } 78 79 } 80 81 private void button3_Click(object sender, EventArgs e) 82 { 83 84 //實例化一個二維碼解析器 85 QRCodeDecoder deCoder = new QRCodeDecoder(); 86 //將圖片解析為位圖數據 87 Bitmap bp = new Bitmap(this.pictureBox1.Image); 88 //將位圖數據用二維碼解析器解析 89 QRCodeBitmapImage qbm=new QRCodeBitmapImage(bp); 90 //解析為字符串 91 string deString = deCoder.decode(qbm); 92 93 //還可以用下面這種寫法,一條語句解析成字符串 94 // String deString = deCoder.decode(new QRCodeBitmapImage(new Bitmap(this.pictureBox1.Image))); 95 //在Label1中顯示出來 96 this.label1.Text = deString; 97 } 98 } 99 }