在圖片上添加二維碼的寫法


 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;
        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM