zoukankan      html  css  js  c++  java
  • 纯C#、.Net生成分享二维码海报

               public string Draw()
              {
                  //背景图片,海报背景
                  string path = Server.MapPath("/Content/tg.jpg");
    
                  System.Drawing.Image imgSrc = System.Drawing.Image.FromFile(path);
    
                  //处理二维码图片大小 240*240px
                  System.Drawing.Image qrCodeImage = ReduceImage("https://api.ooopn.com/qr/api.php?text=https://www.sssam.com&size=360px", 0, 0);
    
                  //处理头像图片大小 100*100px,我这里没放头像,所以注释掉,用到的话放开注释自己测。同时下方也放开
                  //Image titleImage = ReduceImage(user.headimgurl, 100, 100);
    
                  using (Graphics g = Graphics.FromImage(imgSrc))
                  {
                      //画专属推广二维码
                      g.DrawImage(qrCodeImage, new Rectangle(imgSrc.Width - qrCodeImage.Width -450,//-450这个数,越小越靠左,可以调整二维码在背景图的位置
                      imgSrc.Height - qrCodeImage.Height-650 ,//同理-650越小越靠上
                      qrCodeImage.Width,
                      qrCodeImage.Height),
                      0, 0, qrCodeImage.Width, qrCodeImage.Height, GraphicsUnit.Pixel);
    
                      //画头像
                      //g.DrawImage(titleImage, 8, 8, titleImage.Width, titleImage.Height);
    
                      Font font = new Font("宋体", 30, FontStyle.Bold);
    
                      g.DrawString("这里输入文字", font, new SolidBrush(Color.Red), 500, 800);
                  }
                  string newpath = Server.MapPath(@"/Content/newtg_" + Guid.NewGuid().ToString() + ".jpg");
                  imgSrc.Save(newpath, System.Drawing.Imaging.ImageFormat.Jpeg);
                  return newpath;
              }
    
          //获取图片并处理成指定只存返回,宽高填写0,直接返回原尺寸
          public Image ReduceImage(string url, int toWidth, int toHeight)
              {
                  //这里网络方式获取图片二维码,本地读取请自己写
                  WebRequest request = WebRequest.Create(url);
                  WebResponse response = request.GetResponse();
                  Stream responseStream = response.GetResponseStream();
    
                  Image originalImage = Image.FromStream(responseStream);
                  if (toWidth <= 0 && toHeight <= 0)
                  {
                      return originalImage;//这里直接返回
                  }
                  else if (toWidth > 0 && toHeight > 0)
                  {
                      if (originalImage.Width < toWidth && originalImage.Height < toHeight)
                          return originalImage;
                  }
                  else if (toWidth <= 0 && toHeight > 0)
                  {
                      if (originalImage.Height < toHeight)
                          return originalImage;
                      toWidth = originalImage.Width * toHeight / originalImage.Height;
                  }
                  else if (toHeight <= 0 && toWidth > 0)
                  {
                      if (originalImage.Width < toWidth)
                          return originalImage;
                      toHeight = originalImage.Height * toWidth / originalImage.Width;
                  }
                  Image toBitmap = new Bitmap(toWidth, toHeight);
                  using (Graphics g = Graphics.FromImage(toBitmap))
                  {
                      g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
                      g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
                      g.Clear(Color.Transparent);
                      g.DrawImage(originalImage,
                                  new Rectangle(0, 0, toWidth, toHeight),
                                  new Rectangle(0, 0, originalImage.Width, originalImage.Height),
                                  GraphicsUnit.Pixel);
                      originalImage.Dispose();
                      return toBitmap;
                  }
              }
      这里是生成分享海报,下一篇将完成---->将海报分享至微信及朋友圈

      

  • 相关阅读:
    bash变量作用域问题
    grep sed awk find用法
    vim compare 比对
    python的位数问题
    mysql使用
    lua 学习
    iptables的使用
    地铁换乘
    NOJ 1063 生活的烦恼
    猴子的下落
  • 原文地址:https://www.cnblogs.com/ylblogss/p/11943005.html
Copyright © 2011-2022 走看看