1 dll文件引用

nuget中搜索ZXing.Net安装

using ZXing;
using ZXing.QrCode.Internal;
using ZXing.Common;

2 生成一维码

注意:只能生成数字或者字母数据的一维码
代码如下:

     public static Bitmap 1DBarCode(string text){BarcodeWriter writer = new BarcodeWriter();//ITF 格式不能被现在常用的支付宝、微信扫出来//想生成可识别的可以使用 CODE_128 格式//writer.Format = BarcodeFormat.ITF;writer.Format = BarcodeFormat.CODE_128;EncodingOptions options = new EncodingOptions(){//控制生成的一维码大小Width = 150,Height = 50,Margin = 2,//true:一维码下方不显示数字或者字母false:显示,默认是falsePureBarcode = true  };writer.Options = options;Bitmap map = writer.Write(text);return map;}


3 二维码

3.1 不带logo

代码如下:

         /// <summary>/// 生成二维码图片/// </summary>/// <param name="str">要生成二维码的字符串</param>/// <param name="width">二维码图片宽度</param>/// <param name="height">二维码图片高度</param>/// <returns></returns>private Bitmap 2DBarCode(String str, Int32 width, Int32 height){Bitmap result = null;try{BarcodeWriter barCodeWriter = new BarcodeWriter();barCodeWriter.Format = BarcodeFormat.QR_CODE;barCodeWriter.Options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");barCodeWriter.Options.Hints.Add(EncodeHintType.ERROR_CORRECTION, ZXing.QrCode.Internal.ErrorCorrectionLevel.H);barCodeWriter.Options.Height = height;barCodeWriter.Options.Width = width;barCodeWriter.Options.Margin = 0;ZXing.Common.BitMatrix bm = barCodeWriter.Encode(strMessage);result = barCodeWriter.Write(bm);}catch (Exception ex){//异常输出}return result;}

3.2 带logo

 /// <summary>/// 生成带Logo的二维码/// </summary>/// <param name="text">要生成二维码的字符串</param>/// <param name="logo">二维码中的logo图像</param>/// <returns></returns>static Bitmap 3DBarCodeWithLogo(string text, Bitmap logo){Bitmap bitmap = null;//Logo 图片//Bitmap logo = new Bitmap(logo);//构造二维码写码器MultiFormatWriter writer = new MultiFormatWriter();Dictionary<EncodeHintType, object> hint = new Dictionary<EncodeHintType, object>();hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);//生成二维码 BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, 300, 300, hint);BarcodeWriter barcodeWriter = new BarcodeWriter();Bitmap map = barcodeWriter.Write(bm);//获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)int[] rectangle = bm.getEnclosingRectangle();//计算插入图片的大小和位置int middleW = Math.Min((int)(rectangle[2] / 3.5), logo.Width);int middleH = Math.Min((int)(rectangle[3] / 3.5), logo.Height);int middleL = (map.Width - middleW) / 2;int middleT = (map.Height - middleH) / 2;//将img转换成bmp格式,否则后面无法创建Graphics对象Bitmap bmpimg = new Bitmap(map.Width, map.Height, PixelFormat.Format32bppArgb);using (Graphics g = Graphics.FromImage(bmpimg)){g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;g.DrawImage(map, 0, 0);}//将二维码插入图片Graphics myGraphic = Graphics.FromImage(bmpimg);//白底myGraphic.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);myGraphic.DrawImage(logo, middleL, middleT, middleW, middleH);bitmap = bmpimg;return bitmap;}

4 解析一维码和二维码

代码如下

         /// <summary>/// 解码二维码/// </summary>/// <param name="barcodeBitmap">待解码的一/二维码图片</param>/// <returns>扫码结果</returns>private string DecodeQrCode(Bitmap barcodeBitmap){BarcodeReader reader = new BarcodeReader();reader.Options.CharacterSet = "UTF-8";var result = reader.Decode(barcodeBitmap);return (result == null) ? null : result.Text;}

5 最后再来几个和图片有关的小方法

5.1 载入图片与保存图片

载入代码:

         string filePath = "";//选择文件OpenFileDialog dialog = new OpenFileDialog();dialog.Multiselect = true;//该值确定是否可以选择多个文件dialog.Title = "请选择图片";dialog.Filter = "(*.jpg,*.png,*.jpeg,*.bmp,*.gif)|*.jpg;*.png;*.jpeg;*.bmp;*.gif|All files(*.*)|*.*";if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK){filePath = dialog.FileName;if (File.Exists(filePath)){byte[] data = File.ReadAllBytes(filePath);using (MemoryStream ms = new MemoryStream(data)){                       pictureBox1.Image = new Bitmap(Image.FromStream(ms));}}}

保存代码

             SaveFileDialog dialog = new SaveFileDialog();dialog.Title = "保存图片";dialog.Filter = "(*.jpg,*.png,*.jpeg,*.bmp,*.gif)|*.jpg|*.png|*.jpeg|*.bmp|*.gif|All files(*.*)|*.*";dialog.FilterIndex = 1;dialog.RestoreDirectory = true;if (dialog.ShowDialog() == DialogResult.OK){pictureBox1.Image.Save(dialog.FileName);}else{//MessageBox.Show("取消保存");return;}

5.2 图片与Base64互相转换

图片转base64代码:

      public string ImgToBase64String(Image bmp){try{MemoryStream ms = new MemoryStream();bmp.Save(ms, ImageFormat.Jpeg);byte[] arr = new byte[ms.Length];ms.Position = 0;ms.Read(arr, 0, (int)ms.Length);ms.Close();return Convert.ToBase64String(arr);}catch (Exception ex){return null;}}

Base64转图片代码:

     public Bitmap Base64StringToImage(string strbase64){try{byte[] arr = Convert.FromBase64String(strbase64);MemoryStream ms = new MemoryStream(arr);Bitmap img = (Bitmap)Image.FromStream(ms);return img;}catch (Exception ex){return null;}}

C# 使用ZXing.net生成一维码(带数字与不带数字)、二维码(带logo与不带logo)相关推荐

  1. 微信公众号怎么生成带粉丝关注统计的渠道二维码

    关于微信公众号在线生成带粉丝关注统计的渠道二维码,第三方工具微号帮提供了渠道二维码生成功能实现,可以为公众号生成带粉丝关注统计的渠道二维码,可以生成多个不同的渠道二维码,每个渠道二维码都可以单独统计粉 ...

  2. 生成带图片无白边的二维码

    二维码 转载请注明出处:https://blog.csdn.net/u013173247/article/details/81748481 二维码又称二维条码,常见的二维码为QR Code,QR全称Q ...

  3. java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成、解析、下载

    java二维码生成 使用SSM框架 搭建属于自己的APP二维码合成.解析.下载 自己用java搭建一个属于自己APP二维码合成网站.我的思路是这样的: 1.用户在前台表单提交APP的IOS和Andro ...

  4. JAVA生成跳转指定页面并且附带参数的二维码

    所需jar包: <dependency><groupId>com.google.zxing</groupId><artifactId>core</ ...

  5. Android 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新 ...

  6. Swift开发小技巧--扫描二维码,二维码的描边与锁定,设置扫描范围,二维码的生成(高清,无码,你懂得!)...

    二维码的扫描,二维码的锁定与描边,二维码的扫描范围,二维码的生成(高清,无码,你懂得!),识别相册中的二维码 扫描二维码用到的三个重要对象的关系,如图: 1.懒加载各种类 // MARK: - 懒加载 ...

  7. 基于google Zxing实现二维码、条形码扫描,仿微信二维码扫描效果

    转载请注明出处:http://blog.csdn.net/xiaanming/article/details/10163203 了解二维码这个东西还是从微信中,当时微信推出二维码扫描功能,自己感觉挺新 ...

  8. java二维码定位获取坐标并替换原来二维码

    有段时间没有写博客了,不知道是因为工作的原因还是懒了... 程序员还得以写代码为生,so~进入主题吧 公司是做广告服务的,运转模式一句话就是:在车内设备上播放广告主投放的广告,并获取收益,现在有个需求 ...

  9. 手机QQ浏览器“有码女神”惊现!意在推广二维码

    近日,新浪微博.腾讯微博.天涯论坛.猫扑上关于"有码女神"的帖子满天飞,三个身上贴着二维码的模特女瞬间走红网络.很多网友认为这是一场有策划的营销活动,但是具体是谁策划的,由于没法现 ...

  10. Unity3D:问题(已解决):如何:实现手机扫描电脑二维码,然后手机上显示此二维码对应的图片

    目录 一.目的 1.想知道:如何:实现手机扫描电脑二维码,然后手机上显示此二维码对应的图片 二.参考 1. 三.注意 四.操作:1:失败:草料二维码官方不提供API.SDK等 1. 四.操作:2:失败 ...

最新文章

  1. 0666 | IPC_CREAT
  2. Python贪婪算法
  3. 快速简易封装歌词文件
  4. 民航重组:做大容易做强难
  5. 关于struct和class的知识
  6. 登陆界面输入框内加入小图标的样式
  7. Linux中awk命令正确的求最大值、最小值、平均值、总和
  8. 科技论文之Introduction部分写作
  9. Luogu3307:[SDOI2013]项链
  10. java生成pdf文件并打印
  11. VC 蓝牙设备 编程
  12. Apache Pulsar:实时数据处理中消息,计算和存储的统一
  13. 提高数据库查询效率的八个方法
  14. 基于C#分步式聊天系统的在线视频直播系统 之 FY.Logfiles(日志文件组件)
  15. 火车站售票系统课程设计
  16. The file contains top level spacers. They will not be saved.Perhaps you forgot to create a layout
  17. Linux Alsa
  18. quill富文本编辑器——修改默认图片、视频上传功能
  19. Windows-Oracle 11g详细安装教程
  20. 半导体中的缺陷和位错能级

热门文章

  1. 闲置商标转让怎样管理最好?
  2. 西电计科院Python程序设计随课笔记(李光夏)
  3. IPone 接口压力测试
  4. mysql math.sqrt_详解MySQL中的SQRT函数的使用方法
  5. des加密 lua_lua des加密解密 各种加密解密函数 - 奇闻 - 91文库
  6. Java中T和?的区别
  7. 吐血推荐一大波让你直呼哇塞的Canvas库
  8. mybatipse 下载_哇塞!可以免费下载某度文档的doc格式啦
  9. 使用Python将word转换为pdf
  10. 凉凉!Tumblr 或被 300 万贱卖