C#生成二维码

Posted wuln

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#生成二维码相关的知识,希望对你有一定的参考价值。

引用thoughtworks.qrcode.dll

1、不带图片

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Drawing;
 4 using System.Linq;
 5 using System.Text;
 6 using System.Web;
 7 using System.Web.UI;
 8 using System.Web.UI.WebControls;
 9 using ThoughtWorks.QRCode.Codec;
10 
11 namespace makeQrcode
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         protected void createQrCode_Click(object sender, EventArgs e)
21         {
22             createQrCode(this.codeInfo.Text);
23         }
24 
25         private void createQrCode(string text)
26         {
27             Bitmap bt;
28             string enCodeString = text;
29             QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
30             //bt = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
31             bt = qrCodeEncoder.Encode(enCodeString);
32             string filename = string.Format(DateTime.Now.ToString(), "yyyymmddhhmmss");
33             filename = filename.Replace(" ", "");
34             filename = filename.Replace(":", "");
35             filename = filename.Replace("-", "");
36             filename = filename.Replace(".", "");
37             bt.Save(Server.MapPath("~/image/") + filename + ".jpg");
38             this.qrCodeImage.ImageUrl = "~/image/" + filename + ".jpg";
39         }
40 
41     }
42 }

2、带图片

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Drawing;
 4 using System.Drawing.Drawing2D;
 5 using System.Drawing.Imaging;
 6 using System.IO;
 7 using System.Linq;
 8 using System.Web;
 9 using ThoughtWorks.QRCode.Codec;
10 
11 namespace QRCode.QRCode
12 {
13     /// <summary>
14     /// qrcodeImg 的摘要说明
15     /// </summary>
16     public class qrcodeImg : IHttpHandler
17     {
18         public bool IsReusable
19         {
20             get
21             {
22                 return false;
23             }
24         }
25 
26         public void ProcessRequest(HttpContext context)
27         {
28             //context.Response.ContentType = "text/plain";
29             //context.Response.Write("Hello World");
30             string text = context.Request["CodeText"];
31             string text2 = context.Request["img"];
32             if (text2 == "" || text2 == null)
33             {
34                 text2 = "../images/wm.png";
35             }
36             if (!string.IsNullOrEmpty(text))
37             {
38                 QRCodeEncoder qRCodeEncoder = new QRCodeEncoder();
39                 //qRCodeEncoder.set_QRCodeEncodeMode(2);
40                 //qRCodeEncoder.set_QRCodeScale(4);
41                 //qRCodeEncoder.set_QRCodeVersion(8);
42                 //qRCodeEncoder.set_QRCodeErrorCorrect(1);
43                 qRCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
44                 qRCodeEncoder.QRCodeScale = 4;
45                 qRCodeEncoder.QRCodeVersion = 8;
46                 qRCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
47                 System.Drawing.Image image = qRCodeEncoder.Encode(text);
48                 MemoryStream memoryStream = new MemoryStream();
49                 image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Png);
50                 MemoryStream memoryStream2 = new MemoryStream();
51                 CombinImage(image, context.Server.MapPath(text2)).Save(memoryStream2, System.Drawing.Imaging.ImageFormat.Png);
52                 context.Response.ClearContent();
53                 context.Response.ContentType = "image/png";
54                 context.Response.BinaryWrite(memoryStream2.ToArray());
55                 memoryStream.Dispose();
56                 memoryStream2.Dispose();
57             }
58             context.Response.Flush();
59             context.Response.End();
60         }
61         public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack, string destImg)
62         {
63             System.Drawing.Image image = System.Drawing.Image.FromFile(destImg);
64             if (image.Height != 65 || image.Width != 65)
65             {
66                 image = KiResizeImage(image, 65, 65, 0);
67             }
68             System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(imgBack);
69             graphics.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);
70             graphics.DrawImage(image, imgBack.Width / 2 - image.Width / 2, imgBack.Width / 2 - image.Width / 2, image.Width, image.Height);
71             GC.Collect();
72             return imgBack;
73         }
74         public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)
75         {
76             System.Drawing.Image result;
77             try
78             {
79                 System.Drawing.Image image = new System.Drawing.Bitmap(newW, newH);
80                 System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(image);
81                 graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
82                 graphics.DrawImage(bmp, new System.Drawing.Rectangle(0, 0, newW, newH), new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.GraphicsUnit.Pixel);
83                 graphics.Dispose();
84                 result = image;
85             }
86             catch
87             {
88                 result = null;
89             }
90             return result;
91         }
92 
93     }
94 }

前端调用(一个简单的下载页面):

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=0.5, maximum-scale=2.0, user-scalable=yes" />
 6     <title>下载</title>
 7     <style type="text/css">
 8         body
 9         {
10             margin: 0;
11             padding: 0;
12             color: #333333;
13             font-family: "微软雅黑";
14             background: #f0f0f0;
15         }
16         .clear
17         {
18             clear: both;
19         }                     
20         .layout
21         {
22             width: 100%;
23             background: #3d3f40;
24             border-bottom: 1px solid #cccccc;
25         }
26         .layout .logo
27         {
28             max-width: 960px;
29             height: 86px;
30             margin: 0 auto;
31             background: url(../images/plat_logo.png) 10px center no-repeat;
32         }
33         .center
34         {
35             background: #ffffff;
36             border-top: 1px solid #222222;
37         }
38         .center .con
39         {
40             max-width: 960px;
41             margin: 0 auto;
42             padding: 40px 0;
43         }
44         .btn
45         {
46             width: 30%;
47             margin-left: 10px;
48             min-width: 296px;
49             float: left;
50             padding: 5px 5px;
51             text-align: center;
52         }       
53         .btn a.ios
54         {
55             height: 200px;
56             display: block;
57             background: #4691dc url(../images/ios.png) center center no-repeat;
58             margin: 0 auto;
59         }
60         .btn a.android
61         {
62             height: 200px;
63             display: block;
64             background: #a4c63e url(../images/android.png) center center no-repeat;
65             margin: 0 auto;
66         }             
67     </style>
68 </head>
69 <body>
70     <div class="layout">
71         <div class="logo">
72         </div>
73         <div class="center">
74             <div class="con">                        
75                 <div class="btn">
76                     <a id="iphoneLink" href="#" class="ios"></a>
77                 </div>
78                 <div class="btn">
79                     <a href="#" class="android"></a>
80                 </div>
81                 <div class="btn">
82                     <img id="QrCodeImg" alt="" src="" />
83                 </div>
84                 <div class="clear">
85                 </div>
86             </div>
87         </div>
88     </div>    
89     <script type="text/javascript">      
90 
91         var hostname = location.hostname;
92         var port = location.port;
93         var page = "http://" + hostname + ":" + port + "/QRCode/install.html";
94        
95         document.getElementById("QrCodeImg").src = "qrcodeImg.ashx?CodeText=" + page;        
96     </script>
97 </body>
98 </html>

 

以上是关于C#生成二维码的主要内容,如果未能解决你的问题,请参考以下文章

C#生成二维码的方法

C# 代码生成二维码方法及代码示例(QRCoder)

C# 生成 DataMatrix 格式的二维码

c#怎么生成DataMatrix二维码,并打印

c# 谁知道生成二维码的类QRCodeEncoder 属于哪个命名空间么,引不进去啊

C#中二维码生成 使用Gma.QrCodeNet.Encoding类库却无法使用Renderer类?