/// <summary> /// 生成二维码图片 /// </summary> /// <param name="str">字符串</param> /// <param name="size">图片大小</param> /// <param name="path">图片位置 /// 例如 /abc/abc/ /// </param> /// <returns>返回生成的二维码图片路径</returns> public static string Create(string str, int size, string path) { try { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); //设置编码模式 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量度 qrCodeEncoder.QRCodeScale = size; //设置编码版本 qrCodeEncoder.QRCodeVersion = 4; //设置编码错误纠正 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; var encodedData = qrCodeEncoder.Encode(str);// QRcode.CreateQRCode(content, QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeEncoder.ERROR_CORRECTION.M, 8, size, size, 0, codeEyeColor); var qrImage = new QrImage(); Image image = qrImage.CreateImage(encodedData); //System.Drawing.Image image = qrCodeEncoder.Encode(str); string filename = "~" + path + Guid.NewGuid() + ".jpg"; //HttpContext.Current.Request.MapPath(filename) image.Save(filename.Replace("~", "")); return(filename.Replace("~", "")); } catch (Exception) { return(""); } }
/// <summary> /// 获取二维码图片 /// </summary> private void GetQRCodeImage(HttpContext context) { string url = GameRequest.GetQueryString("url"); if (string.IsNullOrEmpty(url)) { return; } QrImage qrcode = new QrImage(); // 编码方式 qrcode.Mode = "byte"; // 二维码版本 qrcode.Version = -1; // 图片尺寸 qrcode.Size = 100; // 补白尺寸 qrcode.Padding = 10; // 二维码纠错等级 qrcode.Level = "Q"; // 二维码前景和背景色 qrcode.Background = Color.White; qrcode.Foreground = Color.Black; // ico图标 try { FileStream fs = new FileStream(TextUtility.GetFullPath("/favicon.ico"), FileMode.Open); Icon ico = new Icon(fs, 256, 256); qrcode.Logo = ico.ToBitmap(); fs.Close(); } catch { } // 创建图片 try { Bitmap encodeImage = qrcode.CreateImage(url); System.IO.MemoryStream ms = new System.IO.MemoryStream(); encodeImage.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); context.Response.ClearContent(); context.Response.ContentType = "image/png"; context.Response.BinaryWrite(ms.ToArray()); encodeImage.Dispose(); } catch { } }
protected void Page_Load(object sender, EventArgs e) { string return_code = Request.Form["return_code"]; string return_msg = Request.Form["return_msg"]; string code_url = Request.Form["code_url"]; string orderID = Request.Form["orderID"]; string amount = Request.Form["amount"]; if (return_code == "SUCCESS" && code_url != null && code_url != "") { //初始化二维码生成工具 QrImage qrcode = new QrImage(); // 编码方式 qrcode.Mode = "byte"; // 二维码版本 qrcode.Version = -1; // 图片尺寸 qrcode.Size = 200; // 补白尺寸 qrcode.Padding = 10; // 二维码纠错等级 qrcode.Level = "Q"; // 二维码前景和背景色 qrcode.Background = Color.White; qrcode.Foreground = Color.Black; Bitmap encodeImage = qrcode.CreateImage(code_url); MemoryStream ms = new MemoryStream(); encodeImage.Save(ms, ImageFormat.Png); byte[] img = ms.GetBuffer(); imagecode = Convert.ToBase64String(img, 0, img.Length); amountcode = amount; orderid = orderID; } }
private void GetQRCodeImage(System.Web.HttpContext context) { string queryString = GameRequest.GetQueryString("url"); if (!string.IsNullOrEmpty(queryString)) { QrImage qrImage = new QrImage(); qrImage.Mode = "byte"; qrImage.Version = -1; qrImage.Size = 100; qrImage.Padding = 10; qrImage.Level = "Q"; qrImage.Background = Color.White; qrImage.Foreground = Color.Black; try { System.IO.FileStream fileStream = new System.IO.FileStream(TextUtility.GetFullPath("/favicon.ico"), System.IO.FileMode.Open); Icon icon = new Icon(fileStream, 256, 256); qrImage.Logo = icon.ToBitmap(); fileStream.Close(); } catch { } try { Bitmap bitmap = qrImage.CreateImage(queryString); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(); bitmap.Save(memoryStream, ImageFormat.Bmp); context.Response.ClearContent(); context.Response.ContentType = "image/png"; context.Response.BinaryWrite(memoryStream.ToArray()); bitmap.Dispose(); } catch { } } }
/// <summary> /// 生成二维码 /// </summary> /// <param name="content">二维码内容</param> /// <param name="size">二维码大小</param> /// <param name="targetPath">生成图片存放路径</param> /// <param name="codeEyeColor">颜色</param> /// <param name="border">边框宽度</param> /// <param name="backGroundPath">背景图路径</param> /// <param name="x">定位x</param> /// <param name="y">定位y</param> /// <param name="width">图片宽度</param> /// <param name="height">图片高度</param> /// <returns>返回生成的图片路径</returns> public static string CreateTGCode(string content, int size, string targetPath, System.Drawing.Color codeEyeColor, QrPosition position, int border = 0, string backGroundPath = "") { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); //设置编码模式 qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; //设置编码测量度 qrCodeEncoder.QRCodeScale = size; //设置编码版本 qrCodeEncoder.QRCodeVersion = 8; //设置编码错误纠正 qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; var encodedData = qrCodeEncoder.Encode(content);// QRcode.CreateQRCode(content, QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeEncoder.ERROR_CORRECTION.M, 8, size, size, 0, codeEyeColor); var qrImage = new QrImage(); Image img = qrImage.CreateImage(encodedData); string filename = "~" + targetPath + Guid.NewGuid() + ".jpg"; if (string.IsNullOrEmpty(backGroundPath)) { img.Save(HttpContext.Current.Request.MapPath(filename)); } else { Image backimg = Image.FromFile(backGroundPath);//背景图片 int x, y; if (position == QrPosition.Top) { //y = backimg.Height / 2 - img.Height / 2 } Image resultImg = QRcode.CombinImage(backimg, img, backimg.Width / 2 - img.Width / 2, backimg.Width / 2 - img.Width / 2, img.Width, img.Height); resultImg.Save(HttpContext.Current.Request.MapPath(filename)); } return(filename.Replace("~", "")); }
/// <summary> /// 生成二维码 /// </summary> /// <param name="Content">内容文本</param> /// <param name="QRCodeEncodeMode">二维码编码方式</param> /// <param name="QRCodeErrorCorrect">纠错码等级</param> /// <param name="QRCodeVersion">二维码版本号 0-40</param> /// <param name="QRCodeScale">每个小方格的预设宽度(像素),正整数</param> /// <param name="size">图片尺寸(像素),0表示不设置</param> /// <param name="border">图片白边(像素),当size大于0时有效</param> /// <returns></returns> public static System.Drawing.Image CreateQRCode(string Content, QRCodeEncoder.ENCODE_MODE QRCodeEncodeMode, QRCodeEncoder.ERROR_CORRECTION QRCodeErrorCorrect, int QRCodeVersion, int QRCodeScale, int size, int border, System.Drawing.Color codeEyeColor) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncodeMode; qrCodeEncoder.QRCodeErrorCorrect = QRCodeErrorCorrect; qrCodeEncoder.QRCodeScale = QRCodeScale; qrCodeEncoder.QRCodeVersion = QRCodeVersion; var encodedData = qrCodeEncoder.Encode(Content);// QRcode.CreateQRCode(content, QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeEncoder.ERROR_CORRECTION.M, 8, size, size, 0, codeEyeColor); var qrImage = new QrImage(); Image image = qrImage.CreateImage(encodedData); //System.Drawing.Image image = qrCodeEncoder.Encode(Content); #region 根据设定的目标图片尺寸调整二维码QRCodeScale设置,并添加边框 if (size > 0) { //当设定目标图片尺寸大于生成的尺寸时,逐步增大方格尺寸 #region 当设定目标图片尺寸大于生成的尺寸时,逐步增大方格尺寸 while (image.Width < size) { qrCodeEncoder.QRCodeScale++; Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); if (imageNew.Width < size) { image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; } else { qrCodeEncoder.QRCodeScale--; //新尺寸未采用,恢复最终使用的尺寸 imageNew.Dispose(); imageNew = null; break; } } #endregion //当设定目标图片尺寸小于生成的尺寸时,逐步减小方格尺寸 #region 当设定目标图片尺寸小于生成的尺寸时,逐步减小方格尺寸 while (image.Width > size && qrCodeEncoder.QRCodeScale > 1) { qrCodeEncoder.QRCodeScale--; Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; if (image.Width < size) { break; } } #endregion //根据参数设置二维码图片白边的最小宽度(按需缩小) #region 根据参数设置二维码图片白边的最小宽度 if (image.Width <= size && border > 0) { while (image.Width <= size && size - image.Width < border * 2 && qrCodeEncoder.QRCodeScale > 1) { qrCodeEncoder.QRCodeScale--; Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; } } #endregion //已经确认二维码图像,为图像染色修饰 if (true) { //定位点方块边长 int beSize = qrCodeEncoder.QRCodeScale * 3; int bep1_l = qrCodeEncoder.QRCodeScale * 2; int bep1_t = qrCodeEncoder.QRCodeScale * 2; int bep2_l = image.Width - qrCodeEncoder.QRCodeScale * 5 - 1; int bep2_t = qrCodeEncoder.QRCodeScale * 2; int bep3_l = qrCodeEncoder.QRCodeScale * 2; int bep3_t = image.Height - qrCodeEncoder.QRCodeScale * 5 - 1; int bep4_l = image.Width - qrCodeEncoder.QRCodeScale * 7 - 1; int bep4_t = image.Height - qrCodeEncoder.QRCodeScale * 7 - 1; System.Drawing.Graphics graphic0 = System.Drawing.Graphics.FromImage(image); // Create solid brush. SolidBrush blueBrush = new SolidBrush(codeEyeColor == null ? System.Drawing.Color.Black : codeEyeColor); // Fill rectangle to screen. graphic0.FillRectangle(blueBrush, bep1_l, bep1_t, beSize, beSize); graphic0.FillRectangle(blueBrush, bep2_l, bep2_t, beSize, beSize); graphic0.FillRectangle(blueBrush, bep3_l, bep3_t, beSize, beSize); graphic0.FillRectangle(blueBrush, bep4_l, bep4_t, qrCodeEncoder.QRCodeScale, qrCodeEncoder.QRCodeScale); } //当目标图片尺寸大于二维码尺寸时,将二维码绘制在目标尺寸白色画布的中心位置 #region 如果目标尺寸大于生成的图片尺寸,将二维码绘制在目标尺寸白色画布的中心位置 if (image.Width < size) { //新建空白绘图 System.Drawing.Bitmap panel = new System.Drawing.Bitmap(size, size); System.Drawing.Graphics graphic0 = System.Drawing.Graphics.FromImage(panel); int p_left = 0; int p_top = 0; if (image.Width <= size) //如果原图比目标形状宽 { p_left = (size - image.Width) / 2; } if (image.Height <= size) { p_top = (size - image.Height) / 2; } //将生成的二维码图像粘贴至绘图的中心位置 graphic0.DrawImage(image, p_left, p_top, image.Width, image.Height); image = new System.Drawing.Bitmap(panel); panel.Dispose(); panel = null; graphic0.Dispose(); graphic0 = null; } #endregion } #endregion return(image); }
/// <summary> /// 生成二维码 /// </summary> /// <param name="Content">内容文本</param> /// <param name="QRCodeEncodeMode">二维码编码方式</param> /// <param name="QRCodeErrorCorrect">纠错码等级</param> /// <param name="QRCodeVersion">二维码版本号 0-40</param> /// <param name="QRCodeScale">每个小方格的预设宽度(像素),正整数</param> /// <param name="size">图片尺寸(像素),0表示不设置</param> /// <param name="border">图片白边(像素),当size大于0时有效</param> /// <returns></returns> public static System.Drawing.Image CreateQRCode(string Content, QRCodeEncoder.ENCODE_MODE QRCodeEncodeMode, QRCodeEncoder.ERROR_CORRECTION QRCodeErrorCorrect, int QRCodeVersion, int QRCodeScale, int size, int border) { QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncodeMode; qrCodeEncoder.QRCodeErrorCorrect = QRCodeErrorCorrect; qrCodeEncoder.QRCodeScale = QRCodeScale; qrCodeEncoder.QRCodeVersion = QRCodeVersion; var encodedData = qrCodeEncoder.Encode(Content);// QRcode.CreateQRCode(content, QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeEncoder.ERROR_CORRECTION.M, 8, size, size, 0, codeEyeColor); var qrImage = new QrImage(); Image image = qrImage.CreateImage(encodedData); //System.Drawing.Image image = qrCodeEncoder.Encode(Content); #region 根据设定的目标图片尺寸调整二维码QRCodeScale设置,并添加边框 if (size > 0) { //当设定目标图片尺寸大于生成的尺寸时,逐步增大方格尺寸 #region 当设定目标图片尺寸大于生成的尺寸时,逐步增大方格尺寸 while (image.Width < size) { qrCodeEncoder.QRCodeScale++; Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); if (imageNew.Width < size) { image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; } else { qrCodeEncoder.QRCodeScale--; //新尺寸未采用,恢复最终使用的尺寸 imageNew.Dispose(); imageNew = null; break; } } #endregion //当设定目标图片尺寸小于生成的尺寸时,逐步减小方格尺寸 #region 当设定目标图片尺寸小于生成的尺寸时,逐步减小方格尺寸 while (image.Width > size && qrCodeEncoder.QRCodeScale > 1) { qrCodeEncoder.QRCodeScale--; //var encodedData = qrCodeEncoder.Encode(Content);// QRcode.CreateQRCode(content, QRCodeEncoder.ENCODE_MODE.BYTE, QRCodeEncoder.ERROR_CORRECTION.M, 8, size, size, 0, codeEyeColor); //var qrImage = new QrImage(); Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; if (image.Width < size) { break; } } #endregion //如果目标尺寸大于生成的图片尺寸,则为图片增加白边 #region 如果目标尺寸大于生成的图片尺寸,则为图片增加白边 if (image.Width <= size) { //根据参数设置二维码图片白边的最小宽度 #region 根据参数设置二维码图片白边的最小宽度 if (border > 0) { while (image.Width <= size && size - image.Width < border * 2 && qrCodeEncoder.QRCodeScale > 1) { qrCodeEncoder.QRCodeScale--; Image imageNew = qrImage.CreateImage(encodedData); //System.Drawing.Image imageNew = qrCodeEncoder.Encode(Content); image = new System.Drawing.Bitmap(imageNew); imageNew.Dispose(); imageNew = null; } } #endregion //当目标图片尺寸大于二维码尺寸时,将二维码绘制在目标尺寸白色画布的中心位置 if (image.Width < size) { //新建空白绘图 System.Drawing.Bitmap panel = new System.Drawing.Bitmap(size, size); System.Drawing.Graphics graphic0 = System.Drawing.Graphics.FromImage(panel); int p_left = 0; int p_top = 0; if (image.Width <= size) //如果原图比目标形状宽 { p_left = (size - image.Width) / 2; } if (image.Height <= size) { p_top = (size - image.Height) / 2; } //将生成的二维码图像粘贴至绘图的中心位置 graphic0.DrawImage(image, p_left, p_top, image.Width, image.Height); image = new System.Drawing.Bitmap(panel); panel.Dispose(); panel = null; graphic0.Dispose(); graphic0 = null; } } #endregion } #endregion return(image); }
private void btnEncode_Click_1(object sender, EventArgs e) { if (txtEncodeData.Text.Trim() == String.Empty) { MessageBox.Show("Data must not be empty."); return; } QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); String encoding = cboEncoding.Text; if (encoding == "Byte") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; } else if (encoding == "AlphaNumeric") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.ALPHA_NUMERIC; } else if (encoding == "Numeric") { qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.NUMERIC; } try { int scale = Convert.ToInt16(txtSize.Text); qrCodeEncoder.QRCodeScale = scale; } catch (Exception ex) { MessageBox.Show("Invalid size!"); return; } try { int version = Convert.ToInt16(cboVersion.Text); qrCodeEncoder.QRCodeVersion = version; } catch (Exception ex) { MessageBox.Show("Invalid version !"); } string errorCorrect = cboCorrectionLevel.Text; if (errorCorrect == "L") { qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L; } else if (errorCorrect == "M") { qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; } else if (errorCorrect == "Q") { qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q; } else if (errorCorrect == "H") { qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.H; } string data = txtEncodeData.Text; var encodedData = qrCodeEncoder.Encode(data); var qrImage = new QrImage(); Image image = qrImage.CreateImage(encodedData); picEncode.Image = image; }