Exemplo n.º 1
0
        protected void Page_Load(object sender, System.EventArgs e)
        {
            string a        = base.Request.Form["return_code"];
            string arg_2B_0 = base.Request.Form["return_msg"];
            string text     = base.Request.Form["code_url"];
            string text2    = base.Request.Form["orderID"];
            string text3    = base.Request.Form["amount"];

            if (a == "SUCCESS" && text != null && text != "")
            {
                Bitmap bitmap = new QrImage
                {
                    Mode       = "byte",
                    Version    = -1,
                    Size       = 200,
                    Padding    = 10,
                    Level      = "Q",
                    Background = Color.White,
                    Foreground = Color.Black
                }.CreateImage(text);
                System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
                bitmap.Save(memoryStream, ImageFormat.Png);
                byte[] buffer = memoryStream.GetBuffer();
                this.imagecode  = System.Convert.ToBase64String(buffer, 0, buffer.Length);
                this.amountcode = text3;
                this.orderid    = text2;
            }
        }
Exemplo n.º 2
0
        /// <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("");
            }
        }
Exemplo n.º 3
0
        /// <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
            { }
        }
Exemplo n.º 4
0
        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;
            }
        }
Exemplo n.º 5
0
        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
                {
                }
            }
        }
Exemplo n.º 6
0
        /// <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("~", ""));
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        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;
        }