使用ThoughtWorks.QRCode 生成二維碼(帶logo)

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

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

3.在項目中添加 image 文件夾 放入你的頭像! 同時也是放生成的圖像。ide

4.介紹: 糾錯能力 · L級:約可糾錯7%的數據碼字· M級:約可糾錯15%的數據碼字· Q級:約可糾錯25%的數據碼字· H級:約可糾錯30%的數據碼字函數

   qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; (糾錯級別不是越大越好的!)this

代碼: spa

  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

 

實現效果code

相關文章
相關標籤/搜索