• 使用ThoughtWorks.QRCode 生成二维码(带logo)


    1.首先要下载ThoughtWorks.QRCode.dll 文件下载地址: http://www.zhaodll.com/dll/t/201207/121997.html

    2.添加ThoughtWorks.QRCode.dll的引用

    3.在项目中添加 image 文件夹 放入你的头像! 同时也是放生成的图像。

    4.介绍: 纠错能力 · L级:约可纠错7%的数据码字· M级:约可纠错15%的数据码字· Q级:约可纠错25%的数据码字· H级:约可纠错30%的数据码字

       qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; (纠错级别不是越大越好的!)

    代码: 

      1 using System;
      2 using System.Web;
      3 using ThoughtWorks.QRCode.Codec;
      4 using ThoughtWorks.QRCode.Codec.Data;
      5 using ThoughtWorks.QRCode.Codec.Util;
      6 using System.IO;
      7 using System.Text;
      8 using System.Drawing;
      9 using System.Drawing.Drawing2D; 
     10 
     11 namespace Towma
     12 {
     13     public partial class WebForm1 : System.Web.UI.Page
     14     {
     15         protected void Page_Load(object sender, EventArgs e)
     16         {
     17 
     18         }
     19 
     20 
     21         protected void Button1_Click(object sender, EventArgs e)
     22         {
     23             create_two(this.TextBox1.Text);
     24         }
     25 
     26         private void create_two(string nr)
     27         {
     28             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
     29             qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
     30             qrCodeEncoder.QRCodeScale = 4;
     31             qrCodeEncoder.QRCodeVersion = 8;
     32             qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
     33             System.Drawing.Image image = qrCodeEncoder.Encode(nr);  
     34            
     35             string filename = string.Format(DateTime.Now.ToString(), "yyyymmddhhmmss");
     36             filename = filename.Replace(" ", "");
     37             filename = filename.Replace(":", "");
     38             filename = filename.Replace("-", "");
     39             filename = filename.Replace(".", "");
     40             filename = filename.Replace("/", "");
     41             CombinImage(image, Server.MapPath("~/image/123456.jpg")).Save(Server.MapPath("~/image/") + filename + ".jpg");
     42 
     43             this.Image1.ImageUrl = "~/image/" + filename + ".jpg";
     44 
     45         }
     46         /// <summary>    
     47         /// 调用此函数后使此两种图片合并,类似相册,有个    
     48         /// 背景图,中间贴自己的目标图片    
     49         /// </summary>    
     50         /// <param name="imgBack">粘贴的源图片</param>    
     51         /// <param name="destImg">粘贴的目标图片</param>    
     52         public static Image CombinImage(Image imgBack, string destImg)
     53         {
     54             Image img = Image.FromFile(destImg);        //照片图片      
     55             if (img.Height != 65 || img.Width != 65)
     56             {
     57                 img = KiResizeImage(img, 65, 65, 0);
     58             }
     59             Graphics g = Graphics.FromImage(imgBack);
     60 
     61             g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);      //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);     
     62 
     63             //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框    
     64 
     65             //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);    
     66 
     67             g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2, img.Width, img.Height);
     68             GC.Collect();
     69             return imgBack;
     70         }
     71 
     72 
     73         /// <summary>    
     74         /// Resize图片    
     75         /// </summary>    
     76         /// <param name="bmp">原始Bitmap</param>    
     77         /// <param name="newW">新的宽度</param>    
     78         /// <param name="newH">新的高度</param>    
     79         /// <param name="Mode">保留着,暂时未用</param>    
     80         /// <returns>处理以后的图片</returns>    
     81         public static Image KiResizeImage(Image bmp, int newW, int newH, int Mode)
     82         {
     83             try
     84             {
     85                 Image b = new Bitmap(newW, newH);
     86                 Graphics g = Graphics.FromImage(b);
     87                 // 插值算法的质量    
     88                 g.InterpolationMode = InterpolationMode.HighQualityBicubic;
     89                 g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);
     90                 g.Dispose();
     91                 return b;
     92             }
     93             catch
     94             {
     95                 return null;
     96             }
     97         }
     98 
     99         public bool IsReusable
    100         {
    101             get
    102             {
    103                 return false;
    104             }
    105         }
    106     }
    107    
    108   
    109    
    110 }
    View Code

    实现效果

  • 相关阅读:
    quartz 中JobExecutionContext的使用
    Memcached 集群架构方面的问题
    Spring+Quartz 集群
    Spring Quartz 持久化解决方案
    不同版本(2.3,2.4,2.5) web.xml 的web-app头信息
    Spring Framework 4.0.0发布,首次支持Java 8
    Serializable java序列化
    Quartz 有状态的JobDataMap
    JobDataMap 不能被序列化如何解决研究中
    Spring-3.2.5 + Quartz-2.2.1 集群实例(Tomcat+Memcached+Quartz集群session共享)
  • 原文地址:https://www.cnblogs.com/vaejp/p/3780224.html
Copyright © 2020-2023  润新知