zoukankan      html  css  js  c++  java
  • QRCodeHelper 二维码生成

    QRCodeHelper 二维码生成

      1 using System;
      2 using System.Drawing;
      3 using ThoughtWorks.QRCode.Codec;
      4 using System.IO;
      5 using System.Text;
      6 using System.Drawing.Drawing2D;
      7 using System.Web;
      8 
      9 namespace APP.QrCodes
     10 {
     11     public class QRCodeHelper
     12     {
     13         public enum ImgEnum
     14         {
     15             JPG
     16         }
     17 
     18         public static string GetImgType(ImgEnum jpg)
     19         {
     20             string ext = string.Empty;
     21             switch (jpg)
     22             {
     23                 case ImgEnum.JPG:
     24                     ext = ".jpg";
     25                     break;
     26                 default:
     27                     break;
     28             }
     29             return ext;
     30         }
     31         /// <summary>  
     32         /// 生成二维码图片  
     33         /// </summary>  
     34         /// <param name="codeNumber">要生成二维码的字符串</param>       
     35         /// <param name="size">大小尺寸</param>  
     36         /// <returns>二维码图片</returns>  
     37         public Bitmap Create_ImgCode(string codeNumber, int size)
     38         {
     39             //创建二维码生成类  
     40             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
     41             //设置编码模式  
     42             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
     43             //设置编码测量度  
     44             qrCodeEncoder.QRCodeScale = size;
     45             //设置编码版本  
     46             qrCodeEncoder.QRCodeVersion = 0;
     47             //设置编码错误纠正  
     48             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
     49             //生成二维码图片  
     50             System.Drawing.Bitmap image = qrCodeEncoder.Encode(codeNumber, Encoding.UTF8);
     51              
     52             return image;
     53         }
     54 
     55         public static string CreateLogQrCode(string strContent)
     56         {
     57             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
     58             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
     59             qrCodeEncoder.QRCodeScale = 5;
     60             qrCodeEncoder.QRCodeVersion = 8;
     61             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
     62             System.Drawing.Image image = qrCodeEncoder.Encode(strContent, Encoding.UTF8);//生成二维码图片  
     63 
     64             System.IO.MemoryStream MStream = new System.IO.MemoryStream();
     65             image.Save(MStream,System.Drawing.Imaging.ImageFormat.Png);
     66 
     67             System.IO.MemoryStream MStream1 = new System.IO.MemoryStream();
     68             CombinImage(image, HttpRuntime.AppDomainAppPath + "QrCodes/logo.png").Save(MStream1, System.Drawing.Imaging.ImageFormat.Png);
     69 
     70             string reStr = Convert.ToBase64String(MStream1.ToArray());
     71             //image.Dispose();  
     72             MStream.Dispose();
     73             MStream1.Dispose();
     74             return reStr;
     75         }
     76 
     77         public string SaveImg(Bitmap bmp, string path)
     78         { 
     79             bmp.Save(path);
     80             return path;
     81         }
     82 
     83         /// <summary>
     84         /// 保存图片
     85         /// </summary>
     86         /// <param name="bmp"></param>
     87         /// <param name="path">路径</param>
     88         /// <param name="jpg">格式</param>
     89         /// <returns></returns>
     90         public bool SaveImg(Bitmap bmp, string path,ImgEnum jpg)
     91         {
     92             try
     93             {
     94                 bmp.Save(path);
     95                 return true;
     96             }
     97             catch
     98             {
     99                 return false;
    100             }
    101         }
    102 
    103         /// <summary>
    104         /// 保存图片
    105         /// </summary>
    106         /// <param name="bmp"></param>
    107         /// <param name="path">路径</param>
    108         /// <param name="path">文件名</param>
    109         /// <returns></returns>
    110         public bool SaveImg(Bitmap bmp, string path,string fileName)
    111         {
    112             try
    113             {
    114                 bmp.Save(path+fileName);
    115                 return true;
    116             }
    117             catch
    118             {
    119                 return false;
    120             }
    121         }
    122 
    123         /// <summary>
    124         /// 保存图片
    125         /// </summary>
    126         /// <param name="bmp"></param>
    127         /// <param name="path">路径</param>
    128         /// <param name="path">文件名</param>
    129         /// <param name="jpg">格式</param>
    130         /// <returns></returns>
    131         public bool SaveImg(Bitmap bmp, string path, string fileName,ImgEnum jpg)
    132         {
    133             try
    134             {
    135                 var ext = GetImgType(jpg);
    136                 bmp.Save(path + fileName + ext);
    137                 return true;
    138             }
    139             catch
    140             {
    141                 return false;
    142             }
    143         }
    144 
    145         /// <summary>
    146         /// Bitmap转化base64编码
    147         /// </summary>
    148         /// <param name="bmp"></param>
    149         /// <returns></returns>
    150         public string GetBase64String(Bitmap bmp)
    151         {
    152             MemoryStream ms = new MemoryStream();
    153             bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    154             byte[] arr = new byte[ms.Length];
    155             ms.Position = 0;
    156             ms.Read(arr, 0, (int)ms.Length);
    157             ms.Close();
    158             string pic = Convert.ToBase64String(arr);
    159             return pic;
    160         }
    161 
    162         /// <summary>
    163         /// 得到流
    164         /// </summary>
    165         /// <param name="bmp"></param>
    166         /// <returns></returns>
    167         public Stream GetStream(Bitmap bmp)
    168         {
    169             MemoryStream ms = new MemoryStream();
    170             bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
    171             byte[] arr = new byte[ms.Length];
    172             ms.Position = 0;
    173             ms.Read(arr, 0, (int)ms.Length);
    174             ms.Close();
    175             return ms;
    176         }
    177 
    178 
    179         /// <summary>   
    180         /// 调用此函数后使此两种图片合并,类似相册,有个    
    181         /// 背景图,中间贴自己的目标图片    
    182         /// </summary>    
    183         /// <param name="imgBack">粘贴的源图片</param>    
    184         /// <param name="destImg">粘贴的目标图片</param>    
    185         /// <summary>   
    186         public static Image CombinImage(Image imgBack, string destImg)
    187         {
    188             Image img = Image.FromFile(destImg);        //照片图片      
    189             if (img.Height != 65 || img.Width != 65)
    190             {
    191                 img = KiResizeImage(img, 65, 65, 0);
    192             }
    193             Graphics g = Graphics.FromImage(imgBack);
    194 
    195             g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);      //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);     
    196 
    197             //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框    
    198 
    199             //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);    
    200 
    201             g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2, img.Width, img.Height);
    202             GC.Collect();
    203             return imgBack;
    204         }  
    205   
    206         /// <summary>    
    207         /// Resize图片    
    208         /// </summary>    
    209         /// <param name="bmp">原始Bitmap</param>    
    210         /// <param name="newW">新的宽度</param>    
    211         /// <param name="newH">新的高度</param>    
    212         /// <param name="Mode">保留着,暂时未用</param>    
    213         /// <returns>处理以后的图片</returns>    
    214         public static Image KiResizeImage(Image bmp, int newW, int newH, int Mode)
    215         {
    216             try
    217             {
    218                 Image b = new Bitmap(newW, newH);
    219                 Graphics g = Graphics.FromImage(b);
    220                 // 插值算法的质量    
    221                 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
    222                 g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
    223                 g.Dispose();
    224                 return b;
    225             }
    226             catch
    227             {
    228                 return null;
    229             }
    230         }  
    231     }
    232 }
    View Code
  • 相关阅读:
    SAP S/4HANA extensibility扩展原理介绍
    SAP CRM系统订单模型的设计与实现
    使用nodejs代码在SAP C4C里创建Individual customer
    SAP Cloud for Customer Account和individual customer的区别
    Let the Balloon Rise map一个数组
    How Many Tables 简单并查集
    Heap Operations 优先队列
    Arpa’s obvious problem and Mehrdad’s terrible solution 思维
    Passing the Message 单调栈两次
    The Suspects 并查集
  • 原文地址:https://www.cnblogs.com/tongyi/p/6728520.html
Copyright © 2011-2022 走看看