激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C#基于QRCode實現動態生成自定義二維碼圖片功能示例

C#基于QRCode實現動態生成自定義二維碼圖片功能示例

2022-03-10 14:09changuncle C#

這篇文章主要介紹了C#基于QRCode實現動態生成自定義二維碼圖片功能,結合實例形式分析了C#使用QRCode動態生成二維碼圖片相關操作技巧,需要的朋友可以參考下

本文實例講述了C#基于QRCode實現動態生成自定義二維碼圖片功能。分享給大家供大家參考,具體如下:

二維碼早就傳遍大江南北了,總以為它是個神奇的東西,其實細細研究之后發現也沒想象的那么神秘,碰巧最近項目中需要動態生成二維碼,解決完實際問題之后,簡單總結整理一下。項目中除了動態生成二維碼之外,還實現了動態生成自定義圖片,二維碼可以是其中的元素。

設置圖片的數據源為動態圖片

?
1
2
3
4
5
6
7
<body>
  <form id="form1" runat="server" >
  <div>
    <img src="GenerateImage.aspx?type=2" />
  </div>
  </form>
</body>

動態生成圖片

GenerateImage.aspx.cs文件內容

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
protected void Page_Load(object sender, EventArgs e)
{
  string type = Request.QueryString["type"].ToString();
  Bitmap codeImage = Create_QRCode("分享才能獲得更多,我盡力而為(5201314)", 6);
  MemoryStream ms = Create_ImgCode(codeImage, "分享才能獲得更多,我盡力而為", "5201314", type);
  Response.ClearContent();
  Response.ContentType = "image/Png";
  Response.BinaryWrite(ms.ToArray());
  Response.End();
}
private Bitmap Create_QRCode(string codeNumber, int size)
{
  //創建二維碼生成類
  QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
  //設置編碼模式
  qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
  //設置編碼測量度
  qrCodeEncoder.QRCodeScale = size;
  //設置編碼版本
  qrCodeEncoder.QRCodeVersion = 10;
  //設置編碼錯誤糾正
  qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;
  //生成二維碼圖片
  System.Drawing.Bitmap codeImage = qrCodeEncoder.Encode(codeNumber, Encoding.UTF8);
  return codeImage;
}
/// <summary>
/// 生成自定義圖片
/// </summary>
/// <param name="codeImage">生成的二維碼</param>
/// <param name="objectName">物體名稱</param>
/// <returns>自定義圖片內存流</returns>
private MemoryStream Create_ImgCode(Bitmap codeImage, string objectName, string objectCode, string type)
{
  string path = string.Empty;
  if (type == "1")
  {
    //設置背景圖片
    path = Server.MapPath("Images/backimg1.png");
  }
  else if (type == "2")
  {
    //設置背景圖片
    path = Server.MapPath("Images/backimg2.png");
  }
  System.Drawing.Image img = System.Drawing.Image.FromFile(path);
  Bitmap bg = new Bitmap(img);
  //為畫布bg(圖片bg)創建一只畫筆
  Graphics g = Graphics.FromImage(bg);
  if (type == "1")
  {
    //【1】將位圖文件codeImage畫到畫布g上
    //【2】codeImage左上角距畫布左邊界25px、距畫布上邊界56px
    //【3】codeImage的長為原長、寬為原寬
    g.DrawImage(codeImage, 25, 56, codeImage.Width, codeImage.Height);
  }
  else if (type == "2")
  {
    g.DrawImage(codeImage, 132, 19, 162, 162);
    System.Drawing.Brush b = new SolidBrush(Color.Black);
    Font font = new Font("宋體", 8, FontStyle.Regular);
    StringFormat sf = new StringFormat();
    sf.LineAlignment = StringAlignment.Center; // 垂直居中
    sf.Alignment = StringAlignment.Near;    // 水平左對齊
    //string也是畫到畫布上的,當畫的string長度大于112px時會自動換行
    SizeF stringSize = g.MeasureString("我的宣言:", font, 112, sf);
    int nWidth = (int)stringSize.Width + 1;
    int nHeight = (int)stringSize.Height + 1;
    RectangleF rf = new Rectangle(new Point(12, 64), new Size(nWidth, nHeight));
    g.DrawString("我的宣言:", font, b, rf, sf);
    stringSize = g.MeasureString(objectName, font, 112, sf);
    int objectWidth = (int)stringSize.Width + 1;
    int objectHeight = (int)stringSize.Height + 1;
    rf = new Rectangle(new Point(12, 64 + nHeight + 8), new Size(objectWidth, objectHeight));
    g.DrawString(objectName, font, b, rf, sf);
    SizeF stringSize1 = g.MeasureString("幸運數字:", font, 112, sf);
    nWidth = (int)stringSize1.Width + 1;
    nHeight = (int)stringSize1.Height + 1;
    RectangleF rf1 = new Rectangle(new Point(12, 136), new Size(nWidth, nHeight));
    g.DrawString("幸運數字:", font, b, rf1, sf);
    stringSize1 = g.MeasureString(objectCode, font, 112, sf);
    objectWidth = (int)stringSize1.Width + 1;
    objectHeight = (int)stringSize1.Height + 1;
    rf1 = new Rectangle(new Point(12, 136 + nHeight + 8), new Size(objectWidth, objectHeight));
    g.DrawString(objectCode, font, b, rf1, sf);
  }
  g.Dispose();
  GC.Collect();
  System.IO.MemoryStream ms = new System.IO.MemoryStream();
  bg.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  //將畫布bg(圖片bg)保存到指定路徑
  path = Server.MapPath("Images");
  bg.Save(path + "\\photoName.png", System.Drawing.Imaging.ImageFormat.Png);
  codeImage.Dispose();
  bg.Dispose();
  return ms;
}

ThoughtWorks.QRCode.dll點擊此處本站下載

希望本文所述對大家C#程序設計有所幫助。

原文鏈接:https://blog.csdn.net/xiaouncle/article/details/52588947

延伸 · 閱讀

精彩推薦
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
主站蜘蛛池模板: 主播粉嫩国产在线精品 | 国产va在线观看 | 中国产一级毛片 | 国产精品久久久久久久久久久久久久久久 | 午夜爱爱福利 | 亚欧在线免费观看 | 亚洲成人高清在线观看 | 一级免费在线 | 精品一区二区久久久久久久网精 | 中文字幕在线资源 | 一级视频网站 | 国产成人在线看 | 日本网站在线播放 | 黄色aaa视频 | 久久久久久久久浪潮精品 | 色视频在线观看 | 欧产日产国产精品乱噜噜 | 久久精品视频国产 | 久草手机视频在线观看 | 黄色网大全 | 色阁阁69婷婷| 日韩深夜视频 | 国产精品久久久久一区二区 | 国产精品免费看 | 欧美成人区 | 免费人成在线观看网站 | 欧美一级毛片大片免费播放 | 成人性生活视频在线观看 | 国产自在自线午夜精品视频在 | 黄色的视频免费观看 | 欧美在线观看黄色 | 999久久国产 | 日韩欧美高清一区 | 91色琪琪电影亚洲精品久久 | 少妇一级淫片高潮流水电影 | 国产99久久精品一区二区 | 最新午夜综合福利视频 | 久久免费精品 | 午夜视频国产 | 亚洲国产高清一区 | 毛片a片免费看 |