生成一張帶有logo的二維碼圖片

string url = 二維碼內容;
            var qrcode = QRCodeTools.EncodeQrcode(url, 500, 500, Encoding.UTF8);

            // 合成活動的LOGO圖片
            var hasImage = GlobalTools.GetCommonContent("TG_EVENT_LOGO_IMG", lott.WX_LOTT_TYPE_SEQ, out contentType, out contentLength, out content)//獲取後臺上傳的logo圖;
            if (hasImage)
            {
                var logo = Image.FromStream(new MemoryStream(content));
                Graphics graph = Graphics.FromImage(qrcode);
                graph.DrawImage(logo, qrcode.Width / 2.6f, qrcode.Height / 2.6f, 100, 100);
                graph.Dispose();
            }

            Image image;
            using (MemoryStream ms = new MemoryStream())
            {
  #region 壓縮二進制圖片質量
 EncoderParameters encoderParameters = new EncoderParameters();
                EncoderParameter encoderParameter = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 50L);//修改此參數,改變生成的圖片質量
                encoderParameters.Param[0] = encoderParameter;
                ImageCodecInfo[] ImageCodecInfoArray = ImageCodecInfo.GetImageEncoders();
                ImageCodecInfo jpegImageCodecInfo = null;
                for (int i = 0; i < ImageCodecInfoArray.Length; i++)
                {
                    if (ImageCodecInfoArray[i].FormatDescription.Equals("JPEG"))
                    {
                        jpegImageCodecInfo = ImageCodecInfoArray[i];
                        break;
                    }
                }
                qrcode.Save(ms, jpegImageCodecInfo, encoderParameters);
  #endregion
                byte[] buffer = new byte[ms.Length];
                ms.Seek(0, SeekOrigin.Begin);
                ms.Read(buffer, 0, buffer.Length);
                image = System.Drawing.Image.FromStream(ms);               imgBase64 = Convert.ToBase64String(buffer);//64位二進制圖片
            }
相關文章
相關標籤/搜索