zoukankan      html  css  js  c++  java
  • c# 仿微信二维码生成

        /// <summary>  
              /// 生成二维码.  
              /// </summary>  
              /// <param name="data">需要添加进去的文本</param>  
              /// <returns></returns>  
              public System.Drawing.Image GCode(String data)  
              {  
                  QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();  
                  qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;  
          
                  qrCodeEncoder.QRCodeScale = 5;  
                  qrCodeEncoder.QRCodeVersion = 7;  
          
                  qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;  
                  var pbImg = qrCodeEncoder.Encode(data, System.Text.Encoding.UTF8);  
                  var width = pbImg.Width / 10;  
                  var dwidth = width * 2;  
                  Bitmap bmp = new Bitmap(pbImg.Width + dwidth, pbImg.Height + dwidth);  
                  Graphics g = Graphics.FromImage(bmp);  
                  var c = System.Drawing.Color.White;  
                  g.FillRectangle(new SolidBrush(c), 0, 0, pbImg.Width + dwidth, pbImg.Height + dwidth);  
                  g.DrawImage(pbImg, width, width);  
                  g.Dispose();  
                  return bmp;  
              }  
          
              /// <summary>  
              /// 调用此函数后使此两种图片合并,类似相册,有个  
              /// 背景图,中间贴自己的目标图片  
              /// </summary>  
              /// <param name="sourceImg">粘贴的源图片</param>  
              /// <param name="destImg">粘贴的目标图片</param>  
              public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack, string destImg)  
              {  
          
                  System.Drawing.Image img = System.Drawing.Image.FromFile(destImg);        //照片图片    
                  if (img.Height != 50 || img.Width != 50) {  
                      img = KiResizeImage(img, 50, 50, 0);  
                  }  
                  Graphics g = Graphics.FromImage(imgBack);  
          
                  g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);      //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);   
          
                  //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框  
          
                  //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);  
          
                  g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2 , img.Width, img.Height);  
                  GC.Collect();  
                  return imgBack;  
              }  
          
              /// <summary>  
              /// Resize图片  
              /// </summary>  
              /// <param name="bmp">原始Bitmap</param>  
              /// <param name="newW">新的宽度</param>  
              /// <param name="newH">新的高度</param>  
              /// <param name="Mode">保留着,暂时未用</param>  
              /// <returns>处理以后的图片</returns>  
              public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)  
              {  
                  try  
                  {  
                      System.Drawing.Image b = new Bitmap(newW, newH);  
                      Graphics g = Graphics.FromImage(b);  
          
                      // 插值算法的质量  
                      g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
          
                      g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);  
                      g.Dispose();  
          
                      return b;  
                  }  
                  catch  
                  {  
                      return null;  
                  }  
              }  
    

     调用

    CombinImage(GCode(Text), linkpath).Save(SavePath);  
    
  • 相关阅读:
    ROW_NUMBER() OVER函数的基本用法
    oracle 中的next_day函数
    宽带大小与实际网速的关系:
    ora-29280 invalid directory path
    [spring]Attribute "scope" must be declared for element type "bean"
    什么是JDK,JRE,SDK,JVM以及API
    管理的常识: 让管理者发挥绩效的7个基本概念 读书笔记
    lua __index的简写
    lua中设置table={}时需要注意的坑
    摄像机旋转
  • 原文地址:https://www.cnblogs.com/Fooo/p/7061889.html
Copyright © 2011-2022 走看看