Asp.net生成二维码代码并给二维码加背景图片(Asp.net给图片加文字、图片水印、图片合并)
深山老妖浏览:9722018-07-06 16:34:03本文累计收益:0我也要赚钱

本文讲解asp.net中如何添加生成二维码,及将生成后的二维码添加一个背景图片,生成二维码采用的是第三方类库(ThoughtWorks.QRCode.dll点击下载类),生成完成后通过加水印的方法将两张图片合并,已达到给二维码加背景的效果。

准备的背景图片,最终代码输出效果:

代码如下:

 

/// <summary>
/// 生成银联二维码带背景
/// </summary>
/// <param name="Content">生成链接地址</param>
/// <param name="path">背景图片地址</param>
/// <param name="name">商户名</param>
/// <param name="nameNum">商户编码</param>
/// <returns></returns>
public static string GetQrCodeImg(string Content, string path, string name, string nameNum)
{
    //生成二维码
    string filename = string.Empty;
    string filepath = string.Empty;
    string txt_qr = Content;
    string qrEncoding = "Byte";
    string Level = "M";
    string txt_ver = "0";
    string txt_size = "23";
    try
    {
        QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
        String encoding = qrEncoding;
        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;
        }
        int scale = Convert.ToInt16(txt_size);
        qrCodeEncoder.QRCodeScale = scale;
        int version = Convert.ToInt16(txt_ver);
        qrCodeEncoder.QRCodeVersion = version;
        string errorCorrect = Level;
        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;
        Image qrCodeImg;
        String data = txt_qr;
        //生成支付二维码
        qrCodeImg = qrCodeEncoder.Encode(data);
        //包装二维码,添加背景
        string kz_name = Path.GetExtension(path);
        if (kz_name == ".jpg" || kz_name == ".bmp" || kz_name == ".jpeg" || kz_name == ".png")
        {
            DateTime time = DateTime.Now;
            filename = "" + time.Year.ToString() + time.Month.ToString() + time.Day.ToString() + time.Hour.ToString() + time.Minute.ToString() + time.Second.ToString() + time.Millisecond.ToString();
            Image img = Bitmap.FromFile(path);
            Graphics g = Graphics.FromImage(img);
            //将二维码图片添加到背景上面
            g.DrawImage(qrCodeImg, new Rectangle(269, 530, qrCodeImg.Width, qrCodeImg.Height));
            //添加商户名称到背景
            Font font = new Font("微软雅黑", 50);
            Color color = ColorTranslator.FromHtml("#124f9f");
            Brush br = new SolidBrush(color);
            //根据每个字宽度处理左侧开始位置
            int startLoc = (1299 - (name.Length * 68)) / 2;
            g.DrawString(name, font, br, startLoc, 370);
            //添加商户编号到背景
            Font fontNo = new Font("微软雅黑", 35);
            startLoc = (1299 - (nameNum.Length * 23)) / 2;
            g.DrawString(nameNum, fontNo, br, startLoc, 1320);
            qrCodeImg.Dispose();
            g.Dispose();
            filename = ClassesLib.GetIdByTime() + ".jpg";
            filepath = HttpContext.Current.Request.ServerVariables["APPL_PHYSICAL_PATH"] + "uploadFile//QRImg//";
            if (!Directory.Exists(filepath))
                Directory.CreateDirectory(filepath);
            img.Save(filepath + filename);
            img.Dispose();
        }
        return "uploadFile/QRImg" + "/" + filename; ;
    }
    catch (Exception ex)
    {
        return "";
    }
}

 

评论列表
发表评论
+ 关注