使用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
    评论
### 回答1: thoughtworks.qrcode是一个二维码生成工具,可以帮助用户快速生成二维码,并支持自定义二维码的颜色、大小、形状等属性。该工具由ThoughtWorks公司开发,旨在为用户提供便捷的二维码生成服务。 ### 回答2: thoughtworks.qrcode 是ThoughtWorks公司开发的一个二维码生成和解码库。二维码是一种存储数据的矩阵条形码,可以被扫描器或手机相机读取。该库提供了简单易用的API,可以方便地在各种编程语言中生成和解码二维码。 使用 thoughtworks.qrcode,可以轻松地生成各种类型的二维码,包括网址、文本、邮件地址、电话号码和其他自定义数据。生成二维码只需要提供相应的信息和设置,库会自动生成相应的二维码图片。生成的二维码可以保存为图片文件或直接显示在网页上。 除了生成二维码,thoughtworks.qrcode还提供了解码功能,可以将扫描到的二维码解析为相应的数据。可以通过该库获得二维码中包含的文本、网址、邮件地址等信息。解码功能可以用于二维码的自动识别和读取。 thoughtworks.qrcode的优点是简单易用、功能强大。无论是生成还是解码二维码,只需要几行代码就可以实现。该库还支持自定义二维码的样式、大小和颜色等参数,可以满足不同的需求。 总之,thoughtworks.qrcode是一个方便实用的二维码生成和解码库,适用于各种编程语言和应用场景。无论是为个人还是商业目的,都可以利用该库轻松地生成和解码二维码。 ### 回答3: thoughtworks.qrcode是一个开源的二维码生成工具,由全球知名的软件公司ThoughtWorks开发和维护。它提供了一种简单而高效的方式来生成各种类型的二维码,包括URL链接、文本、电子名片、Wi-Fi连接等。 thoughtworks.qrcode基于Java编程语言开发,可以很容易地集成到各种应用程序中。它提供了丰富的API,使开发人员可以根据自己的需求生成定制化的二维码。同时,thoughtworks.qrcode还支持多种二维码格式,如QR Code、Aztec Code、Data Matrix等,使用户可以根据需要选择最适合的格式。 thoughtworks.qrcode还具有很好的扩展性和可定制性。用户可以根据自己的需求对生成的二维码进行个性化的设计,比如添加自定义的颜色、背景图片、LOGO等,增加二维码的辨识度和美观度。此外,thoughtworks.qrcode还支持二维码的错误纠正功能,可以在一定的损坏和变形情况下仍能正确扫描。 除了生成二维码,thoughtworks.qrcode还提供了解析已有二维码的功能。用户可以通过该工具轻松地解析已有的二维码,并获取其中的信息,如URL、文本内容等。这对于需要处理大量二维码的应用场景非常有用,比如扫码登录、扫码支付等。 总的来说,thoughtworks.qrcode是一个功能强大且易于使用的开源二维码生成工具,通过它,开发人员可以方便地生成和解析各种类型的二维码,为应用程序增加功能和美观度。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值