使用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

 

实现效果

 

转载于:https://www.cnblogs.com/vaejp/p/3780224.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值