/// <summary>
/// 生成带二维码的图片
/// 所在目录下imgs目录 分为 八张切图
/// 名称:imgTop、imgTopLeft、imgHeadPhoto、imgTopRight、imgIn、imgLeft、imgRight、imgBotton
/// 格式:jpg
/// </summary>
/// <param name="qrcodeUri">二维码名称</param>
/// <returns>生成的图片地址</returns>
public string getQrCodeImg(string qrcodeUri,string where,int hasPhoto)
{
//根据 邀请码 获取当前用户 昵称、头像
BLL.sf_user_info userBll = new BLL.sf_user_info();
Model.sf_user_info userInfo = userBll.GetModelByKey(qrcodeUri,where);
System.Drawing.Image imgHeadPhoto = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgHeadPhoto.jpg"));
int headwidth = imgHeadPhoto.Width;
int headheight = imgHeadPhoto.Height;
try
{
if (!string.IsNullOrEmpty(userInfo.photoUri) && hasPhoto>0)
{
System.Net.WebRequest request = System.Net.WebRequest.Create(userInfo.photoUri);
System.Net.WebResponse response = request.GetResponse();
Stream reader = response.GetResponseStream();
if (reader != null)
{
imgHeadPhoto = System.Drawing.Image.FromStream(reader);
}
reader.Close();
reader.Dispose();
}
}
catch (Exception)
{
}
//根据 二维码资源 参数 获取图片对象
System.Drawing.Image imgCode = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/code/" + qrcodeUri + ".jpg"));
//从固定目录读取 图片所需切片
System.Drawing.Image imgTop = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgTop.jpg"));
System.Drawing.Image imgTopLeft = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgTopLeft.jpg"));
System.Drawing.Image imgTopRight = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgTopRight.jpg"));
System.Drawing.Image imgIn = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgIn.jpg"));
System.Drawing.Image imgLeft = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgLeft.jpg"));
System.Drawing.Image imgRight = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgRight.jpg"));
System.Drawing.Image imgBotton = System.Drawing.Image.FromFile(Utils.GetMapPath(@"/allqrcode/imgs/imgBotton.jpg"));
//创建 带二维码的图片 大小的 位图
Bitmap tmpImage = new Bitmap(imgTop.Width, imgTop.Height + imgTopLeft.Height + imgIn.Height + imgLeft.Height + imgBotton.Height);
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(tmpImage);
//绘制文字水印
if (hasPhoto>0)
{
System.Drawing.Graphics gs = System.Drawing.Graphics.FromImage(imgIn);
Brush red = new System.Drawing.Drawing2D.LinearGradientBrush(
new Rectangle(10, 20, 240, 30), Color.Red, Color.Red, 90);
gs.DrawString(userInfo.nickName, new Font("华文楷体", 25, FontStyle.Bold), red, new PointF(160, 33));
gs.Dispose();
}
//在同一位图上 绘制 不同的图片内容
//绘制头部
g.DrawImage(imgTop, 0, 0, imgTop.Width, imgTop.Height);
//绘制头像这一行
g.DrawImage(imgTopLeft,0, imgTop.Height, imgTopLeft.Width, imgTopLeft.Height);
g.DrawImage(imgHeadPhoto, imgTopLeft.Width, imgTop.Height, headwidth, headheight);
g.DrawImage(imgTopRight, imgTopLeft.Width + headwidth, imgTop.Height, imgTopRight.Width, imgTopRight.Height+4);
//绘制中间
g.DrawImage(imgIn, 0, imgTop.Height + imgTopLeft.Height, imgIn.Width, imgIn.Height);
//绘制二维码这一行
g.DrawImage(imgLeft, 0, imgTop.Height + imgTopLeft.Height + imgIn.Height, imgLeft.Width, imgLeft.Height);
g.DrawImage(imgCode, imgLeft.Width, imgTop.Height + imgTopLeft.Height + imgIn.Height, imgLeft.Height, imgLeft.Height);
g.DrawImage(imgRight, imgLeft.Width + imgLeft.Height+2, imgTop.Height + imgTopLeft.Height + imgIn.Height, imgRight.Width, imgRight.Height);
//绘制底部
g.DrawImage(imgBotton, 0, imgTop.Height + imgTopLeft.Height + imgIn.Height + imgLeft.Height, imgBotton.Width, imgBotton.Height);
//释放资源 并保存要返回 位图
imgTop.Dispose();
imgLeft.Dispose();
imgRight.Dispose();
imgTopLeft.Dispose();
imgTopRight.Dispose();
imgIn.Dispose();
imgBotton.Dispose();
imgCode.Dispose();
imgHeadPhoto.Dispose();
string qrCodeImg = "/allqrcode/imgCode/" + qrcodeUri + ".jpg";
tmpImage.Save(Utils.GetMapPath(@qrCodeImg));
g.Dispose();
tmpImage.Dispose();
return qrCodeImg;
}