http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 50481|回复: 22

[C#语言基础] C#Qrcode生成二维码支持中文,带图片,带文字

[复制链接]
发表于 2013-3-18 13:39:35 | 显示全部楼层 |阅读模式
               C#Qrcode生成二维码支持中文
带图片的操作请看二楼的帖子
当然开始需要下载一下C#Qrcode的源码 下载地址 : http://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library
直接下载
QRCode.zip (2.35 MB, 下载次数: 989)

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-3-18 13:48:03 | 显示全部楼层
下面是带图片的方式
[C#] 纯文本查看 复制代码
/// <summary>  
      /// 生成二维码.  
      /// </summary>  
      /// <param name="data">需要添加进去的文本</param>  
      /// <returns></returns>  
      public System.Drawing.Image GCode(String data)  
      {  
          QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();  
          qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;  
          qrCodeEncoder.QRCodeScale = 5;  
          qrCodeEncoder.QRCodeVersion = 7;  
  
          qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.L;  
          var pbImg = qrCodeEncoder.Encode(data, System.Text.Encoding.UTF8);  
         var width = pbImg.Width / 10;  
        var dwidth = width * 2;  
          Bitmap bmp = new Bitmap(pbImg.Width + dwidth, pbImg.Height + dwidth);  
          Graphics g = Graphics.FromImage(bmp);  
          var c = System.Drawing.Color.White;  
          g.FillRectangle(new SolidBrush(c), 0, 0, pbImg.Width + dwidth, pbImg.Height + dwidth);  
          g.DrawImage(pbImg, width, width);  
          g.Dispose();  
         return bmp;  
      }  
  
     /// <summary>  
      /// 调用此函数后使此两种图片合并,类似相册,有个  
    /// 背景图,中间贴自己的目标图片  
     /// </summary>  
      /// <param name="sourceImg">粘贴的源图片</param>  
      /// <param name="destImg">粘贴的目标图片</param>  
      public static System.Drawing.Image CombinImage(System.Drawing.Image imgBack, string destImg)  
      {  
 
          System.Drawing.Image img = System.Drawing.Image.FromFile(destImg);        //照片图片    
          if (img.Height != 50 || img.Width != 50) {  
              img = KiResizeImage(img, 50, 50, 0);  
          }  
          Graphics g = Graphics.FromImage(imgBack);  
  
          g.DrawImage(imgBack, 0, 0, imgBack.Width, imgBack.Height);      //g.DrawImage(imgBack, 0, 0, 相框宽, 相框高);   
  
          //g.FillRectangle(System.Drawing.Brushes.White, imgBack.Width / 2 - img.Width / 2 - 1, imgBack.Width / 2 - img.Width / 2 - 1,1,1);//相片四周刷一层黑色边框  
  
          //g.DrawImage(img, 照片与相框的左边距, 照片与相框的上边距, 照片宽, 照片高);  
  
         g.DrawImage(img, imgBack.Width / 2 - img.Width / 2, imgBack.Width / 2 - img.Width / 2 , img.Width, img.Height);  
          GC.Collect();  
          return imgBack;  
      }  
  
      /// <summary>  
      /// Resize图片  
      /// </summary>  
      /// <param name="bmp">原始Bitmap</param>  
      /// <param name="newW">新的宽度</param>  
      /// <param name="newH">新的高度</param>  
      /// <param name="Mode">保留着,暂时未用</param>  
      /// <returns>处理以后的图片</returns>  
      public static System.Drawing.Image KiResizeImage(System.Drawing.Image bmp, int newW, int newH, int Mode)  
      {  
          try  
          {  
              System.Drawing.Image b = new Bitmap(newW, newH);  
              Graphics g = Graphics.FromImage(b);  
  
              // 插值算法的质量  
              g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
  
             g.DrawImage(bmp, new Rectangle(0, 0, newW, newH), new Rectangle(0, 0, bmp.Width, bmp.Height), GraphicsUnit.Pixel);  
             g.Dispose();  
  
              return b;  
          }  
         catch  
          {  
              return null;  
      }  
}

带图片的方法
发表于 2013-3-18 14:32:03 | 显示全部楼层
不错不错,学习了
发表于 2013-5-3 01:08:43 | 显示全部楼层
写的很好,上面的代码我测试过了,可以生成内嵌有图片的二维码,但是,我将二维码解密后,原来的数据信息有一部分出现了乱码,可能是里面小图片所占区域的数据信息被破坏了吧,但怎样才能解密出正解的原始数据呢??
 楼主| 发表于 2013-5-3 08:01:39 | 显示全部楼层
312899liliuzhu 发表于 2013-5-3 01:08
写的很好,上面的代码我测试过了,可以生成内嵌有图片的二维码,但是,我将二维码解密后,原来的数据信息有 ...

安说和这个无关吧。应该还是编码的问题,你修改下编码试试
发表于 2013-5-3 14:05:37 | 显示全部楼层

  g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
这一句是什么意思,我就把这句注释掉了,解密后只有中间一部份字符乱码,前面的,和后面的都正常
你的上面代码你自己测试过了没(解密)??
  
发表于 2013-5-3 14:06:36 | 显示全部楼层

  g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
这一句是什么意思,我就把这句注释掉了,解密后只有中间一部份字符乱码,前面的,和后面的都正常
你的上面代码你自己测试过了没(解密)??
  
 楼主| 发表于 2013-5-3 14:14:50 | 显示全部楼层
312899liliuzhu 发表于 2013-5-3 14:06
g.InterpolationMode = InterpolationMode.HighQualityBicubic;  
这一句是什么意思,我就把这句注释掉 ...

我肯定测试过啊,你注释了干什么,如果真不行,你再找找别的解决方法吧。我只会这么多。
发表于 2013-5-3 14:24:37 | 显示全部楼层
InterpolationMode 的命名空间是啥,我的这一句报错,没引用命名空间!
 楼主| 发表于 2013-5-3 14:37:14 | 显示全部楼层
312899liliuzhu 发表于 2013-5-3 14:24
InterpolationMode 的命名空间是啥,我的这一句报错,没引用命名空间!

using System.Drawing.Drawing2D;
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-11 10:39

© 2014-2021

快速回复 返回顶部 返回列表