public MemoryStream ProcessRequest() { String data = @"二維碼內容"; if (!string.IsNullOrEmpty(data)) { //二維碼生成 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); //設置編碼模式 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //設置編碼測量度,值越大生成的二維碼圖片像素越高,尺寸越大(建議設置為4) qrCodeEncoder.QRCodeScale = 4; //設置編碼版本 qrCodeEncoder.QRCodeVersion = 0; //設置編碼錯誤糾正 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; //生成二維碼圖片 System.Drawing.Bitmap image = qrCodeEncoder.Encode(data); MemoryStream MStream = new MemoryStream(); image.Save(MStream, System.Drawing.Imaging.ImageFormat.Png);//保存在MStream1中 MemoryStream MStream1 = new MemoryStream(); //根據URL獲得要打碼的目標圖片 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(@"要打碼的圖片地址(URL)"); WebResponse response = request.GetResponse();//獲得響應 Image img = Image.FromStream(response.GetResponseStream());///實例化,得到img CombinImage(img, image).Save(MStream1, System.Drawing.Imaging.ImageFormat.Jpeg); image.Dispose(); return MStream1; } else { return null; } } /// <summary> /// 調用此函數后使此兩種圖片合並,類似相冊,有個 /// 背景圖,中間貼自己的目標圖片 /// </summary> /// <param name="imgBack">粘貼的源圖片</param> /// <param name="destImg">粘貼的目標圖片</param> public static Image CombinImage(Image imgBack, Image destImg) { Graphics g = Graphics.FromImage(imgBack); g.FillRectangle(System.Drawing.Brushes.White, 20,20,10,10);//相片四周刷一層黑色邊框 //g.DrawImage(img, 照片與相框的左邊距, 照片與相框的上邊距, 照片寬, 照片高); g.DrawImage(destImg, 20, 20, 100, 100); // Create font and brush. Font drawFont = new Font("Arial", 13); SolidBrush drawBrush = new SolidBrush(Color.Black); // Create point for upper-left corner of drawing. PointF drawPoint = new PointF(150.0F, 50.0F); // Set format of string. StringFormat drawFormat = new StringFormat(); drawFormat.FormatFlags = StringFormatFlags.NoWrap; g.DrawString("手機掃碼查看", drawFont, drawBrush, 10, 120); GC.Collect(); return imgBack; }