最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#基于QRCode實(shí)現(xiàn)動(dòng)態(tài)生成自定義二維碼圖片功能示例

 更新時(shí)間:2019年02月22日 11:11:35   作者:changuncle  
這篇文章主要介紹了C#基于QRCode實(shí)現(xiàn)動(dòng)態(tài)生成自定義二維碼圖片功能,結(jié)合實(shí)例形式分析了C#使用QRCode動(dòng)態(tài)生成二維碼圖片相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了C#基于QRCode實(shí)現(xiàn)動(dòng)態(tài)生成自定義二維碼圖片功能。分享給大家供大家參考,具體如下:

二維碼早就傳遍大江南北了,總以為它是個(gè)神奇的東西,其實(shí)細(xì)細(xì)研究之后發(fā)現(xiàn)也沒想象的那么神秘,碰巧最近項(xiàng)目中需要?jiǎng)討B(tài)生成二維碼,解決完實(shí)際問題之后,簡單總結(jié)整理一下。項(xiàng)目中除了動(dòng)態(tài)生成二維碼之外,還實(shí)現(xiàn)了動(dòng)態(tài)生成自定義圖片,二維碼可以是其中的元素。

設(shè)置圖片的數(shù)據(jù)源為動(dòng)態(tài)圖片

<body>
  <form id="form1" runat="server" >
  <div>
    <img src="GenerateImage.aspx?type=2" />
  </div>
  </form>
</body>

動(dòng)態(tài)生成圖片

GenerateImage.aspx.cs文件內(nèi)容

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)
{
  //創(chuàng)建二維碼生成類
  QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
  //設(shè)置編碼模式
  qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;
  //設(shè)置編碼測量度
  qrCodeEncoder.QRCodeScale = size;
  //設(shè)置編碼版本
  qrCodeEncoder.QRCodeVersion = 10;
  //設(shè)置編碼錯(cuò)誤糾正
  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>自定義圖片內(nèi)存流</returns>
private MemoryStream Create_ImgCode(Bitmap codeImage, string objectName, string objectCode, string type)
{
  string path = string.Empty;
  if (type == "1")
  {
    //設(shè)置背景圖片
    path = Server.MapPath("Images/backimg1.png");
  }
  else if (type == "2")
  {
    //設(shè)置背景圖片
    path = Server.MapPath("Images/backimg2.png");
  }
  System.Drawing.Image img = System.Drawing.Image.FromFile(path);
  Bitmap bg = new Bitmap(img);
  //為畫布bg(圖片bg)創(chuàng)建一只畫筆
  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也是畫到畫布上的,當(dāng)畫的string長度大于112px時(shí)會(huì)自動(dòng)換行
    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("幸運(yùn)數(shù)字:", 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("幸運(yùn)數(shù)字:", 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點(diǎn)擊此處本站下載

PS:本站還提供了一個(gè)功能十分強(qiáng)悍的在線二維碼生成工具,可實(shí)現(xiàn)文本、電話號(hào)碼、短信、郵件、網(wǎng)址等的二維碼生成及l(fā)ogo圖標(biāo)添加功能:

在線生成二維碼工具(加強(qiáng)版):
http://tools.jb51.net/transcoding/jb51qrcode

更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#圖片操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)

希望本文所述對大家C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • c#實(shí)現(xiàn)繁體轉(zhuǎn)簡體的示例代碼

    c#實(shí)現(xiàn)繁體轉(zhuǎn)簡體的示例代碼

    OpenCC是一個(gè)開源的中文繁簡轉(zhuǎn)換工具,支持多種語言,這篇文章主要為大家介紹了C#如何使用OpenCC實(shí)現(xiàn)繁體轉(zhuǎn)簡體功能,有需要的可以了解下
    2025-01-01
  • C#使用遠(yuǎn)程服務(wù)調(diào)用框架Apache Thrift

    C#使用遠(yuǎn)程服務(wù)調(diào)用框架Apache Thrift

    這篇文章介紹了C#使用遠(yuǎn)程服務(wù)調(diào)用框架Apache Thrift的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#遠(yuǎn)程獲取圖片文件流的方法

    C#遠(yuǎn)程獲取圖片文件流的方法

    這篇文章主要介紹了C#遠(yuǎn)程獲取圖片文件流的方法,涉及C#針對圖片及文件流操作的相關(guān)技巧,需要的朋友可以參考下
    2016-02-02
  • C#對集合進(jìn)行排序

    C#對集合進(jìn)行排序

    這篇文章介紹了C#對集合進(jìn)行排序的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • C#反射(Reflection)詳解

    C#反射(Reflection)詳解

    本文詳細(xì)講解了C#中的反射(Reflection),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • c#通過unicode編碼判斷字符是否為中文示例分享

    c#通過unicode編碼判斷字符是否為中文示例分享

    本文介紹了c#通過unicode編碼判斷字符是否為中文的示例,在unicode字符串中,中文的范圍是在4E00..9FFF:CJK Unified Ideographs。通過對字符的unicode編碼進(jìn)行判斷來確定字符是否為中文
    2014-01-01
  • C#調(diào)用動(dòng)態(tài)庫

    C#調(diào)用動(dòng)態(tài)庫

    本文詳細(xì)講解了C#調(diào)用動(dòng)態(tài)庫的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • C#中的引用類型以及特殊引用類型詳解

    C#中的引用類型以及特殊引用類型詳解

    本文詳細(xì)講解了C#中的引用類型以及特殊引用類型,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • C#數(shù)字圖象處理之圖像灰度化方法

    C#數(shù)字圖象處理之圖像灰度化方法

    這篇文章主要介紹了C#數(shù)字圖象處理之圖像灰度化方法,涉及C#基于Bitmap類操作圖像的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#使用JavaScriptSerializer序列化時(shí)的時(shí)間類型處理

    C#使用JavaScriptSerializer序列化時(shí)的時(shí)間類型處理

    這篇文章主要為大家詳細(xì)介紹了C#使用JavaScriptSerializer序列化時(shí)的時(shí)間類型處理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08

最新評論

肥东县| 大兴区| 陆丰市| 文水县| 麻城市| 阳曲县| 平和县| 抚远县| 双辽市| 达拉特旗| 确山县| 于都县| 蓬莱市| 衡南县| 盐源县| 郴州市| 托克托县| 丹东市| 西青区| 满城县| 长丰县| 玛纳斯县| 普洱| 霍林郭勒市| 宁南县| 扶余县| 互助| 砚山县| 贵阳市| 邵阳县| 黄浦区| 遵化市| 安岳县| 靖江市| 昌宁县| 丰城市| 洛浦县| 三亚市| 陵川县| 湘潭县| 新源县|