多种方式C#实现生成(条码/二维码)

您所在的位置:网站首页 二维码转换代码 多种方式C#实现生成(条码/二维码)

多种方式C#实现生成(条码/二维码)

#多种方式C#实现生成(条码/二维码)| 来源: 网络整理| 查看: 265

C#通过第三方组件生成二维码(QR Code)和条形码(Bar Code)

用C#如何生成二维码,我们可以通过现有的第三方dll直接来实现,下面列出几种不同的生成方法:

 

1):通过QrCodeNet(Gma.QrCodeNet.Encoding.dll)来实现

1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示:

 1.2):具体生成二维码方法如下

复制代码 private void GenerateQRByQrCodeNet() { QrEncoder qrEncoder = new QrEncoder(ErrorCorrectionLevel.H); QrCode qrCode = new QrCode(); qrEncoder.TryEncode("Hello World. This is Eric Sun Testing...", out qrCode); GraphicsRenderer renderer = new GraphicsRenderer(new FixedModuleSize(5, QuietZoneModules.Two), Brushes.Black, Brushes.White); using (MemoryStream ms = new MemoryStream()) { renderer.WriteToStream(qrCode.Matrix, ImageFormat.Png, ms); Image img = Image.FromStream(ms); img.Save("E:/csharp-qrcode-net.png"); } } 复制代码

更多详细信息请参考如下链接:

http://www.cnblogs.com/Soar1991/archive/2012/03/30/2426115.html

http://qrcodenet.codeplex.com/ 

http://stackoverflow.com/questions/7020136/free-c-sharp-qr-code-generator

 

2):通过ThoughtWorks.QRCode(ThoughtWorks.QRCode.dll)来实现

1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示:

 1.2):具体生成二维码方法如下

复制代码 private void GenerateQRByThoughtWorks() { QRCodeEncoder encoder = new QRCodeEncoder(); encoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;//编码方式(注意:BYTE能支持中文,ALPHA_NUMERIC扫描出来的都是数字) encoder.QRCodeScale = 4;//大小(值越大生成的二维码图片像素越高) encoder.QRCodeVersion = 0;//版本(注意:设置为0主要是防止编码的字符串太长时发生错误) encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;//错误效验、错误更正(有4个等级) encoder.QRCodeBackgroundColor = Color.Yellow; encoder.QRCodeForegroundColor = Color.Green; string qrdata = "Hello 世界! This is Eric Sun Testing...."; Bitmap bcodeBitmap = encoder.Encode(qrdata.ToString()); bcodeBitmap.Save(@"E:\HelloWorld.png", ImageFormat.Png); bcodeBitmap.Dispose(); } 复制代码

 

3):通过Spire.BarCode(Spire.BarCode.dll)来实现

 1.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示:

 1.2):具体生成二维码方法如下

复制代码 private void GenerateQRBySpire() { BarcodeSettings bs = new BarcodeSettings() { Data = "This is qr code: H2AMK-Z3V69-RTJZD-C7JAU-WILL4", Type = BarCodeType.QRCode, TopTextColor = Color.Red, ShowCheckSumChar = false, ShowText = false }; //Generate the barcode based on the this.barCodeControl1 BarCodeGenerator generator = new BarCodeGenerator(bs); Image barcode = generator.GenerateImage(); //save the barcode as an image barcode.Save(@"E:\barcode-2d.png"); } 复制代码

 

1.3):附加具体生成条形码方法如下

复制代码 private void GenerateBarCodeBySpire() { BarcodeSettings bs = new BarcodeSettings() { Data = "This is barcode: H2AMK-Z3V69-RTJZD-C7JAU-WILL4", ShowCheckSumChar = false, TopTextColor = Color.Red, ShowTopText = false, ShowTextOnBottom = true }; //Generate the barcode based on the this.barCodeControl1 BarCodeGenerator generator = new BarCodeGenerator(bs); Image barcode = generator.GenerateImage(); //save the barcode as an image barcode.Save(@"E:\barcode.png"); } 复制代码

 

1.3):上诉代码我们发现生成的条形码和二维码带有水印[E-ICEBLUE],如何去除水印呢?请看如下代码

BarcodeSettings.ApplyKey("......");

请发送邮件到 [email protected] 免费获取对应的 key 值

 

更多详细信息请参考如下链接:

http://freebarcode.codeplex.com/

http://www.e-iceblue.com/Knowledgebase/Spire.BarCode/Program-Guide/Programme-Guide-for-Spire.BarCode.html

http://blog.csdn.net/eiceblue/article/details/43405173

 

4):通过Barcode Rendering Framework(Zen.Barcode.Rendering.Framework.dll)来实现

4.1):首先通过VS2015的NuGet下载对应的第三方组件,如下图所示:

 

4.2):具体生成二维码方法如下

private void GenerateBarCodeByZen() { Code128BarcodeDraw barcode128 = BarcodeDrawFactory.Code128WithChecksum; Image img = barcode128.Draw("Hello World", 40); img.Save("E:/zenbarcode.gif"); }

 

4.3):附加具体生成条形码方法如下

private void GenerateQRByZen() { CodeQrBarcodeDraw qrcode = BarcodeDrawFactory.CodeQr; Image img = qrcode.Draw("Hello World!", qrcode.GetDefaultMetrics(40)); img.Save("E:/zenqrcode.gif"); }

更多详细信息请参考如下链接:

http://barcoderender.codeplex.com/ 

 

5):通过BarcodeLib(BarcodeLib.Barcode.ASP.NET.dll)来实现,下载对应dll的连接为 http://www.barcodelib.com/asp_net/

5.1):具体生成二维码方法如下

复制代码 private void GenerateQRByBarcodeLib() { QRCode qrbarcode = new QRCode(); qrbarcode.Encoding = QRCodeEncoding.Auto; qrbarcode.Data = "336699885522 This is Eric Sun Testing."; qrbarcode.ModuleSize = 10; qrbarcode.LeftMargin = 8; qrbarcode.RightMargin = 8; qrbarcode.TopMargin = 8; qrbarcode.BottomMargin = 8; qrbarcode.ImageFormat = System.Drawing.Imaging.ImageFormat.Gif; // Save QR Code barcode image into your system qrbarcode.drawBarcode("E:/csharp-qrcode-lib.gif"); } 复制代码

 

5.2):附加具体生成条形码方法如下

复制代码 private void GenerateLinearByBarcodeLib() { Linear barcode = new Linear(); barcode.Type = BarcodeType.CODE128; barcode.Data = "CODE128"; // other barcode settings. // save barcode image into your system barcode.drawBarcode("E:/barcode.png"); } 复制代码

我们使用的是试用版(带水印的......),还有付费的正版,详情请参考如下链接:

http://www.barcodelib.com/asp_net/ 

 

出处:https://www.cnblogs.com/mingmingruyuedlut/p/6120671.html

=======================================================================================

Net Core 生成二维码 一维码

二维码包QRCoder

生成二维码帮助类

public interface IQRCodeMoons: ISingletonDependency { Bitmap GetQRCode(string data, int pixel); byte[] GetQrCodeByteArray(string data, int pixel = 4); } 复制代码 /// /// 二维码 /// public class QRCodeMoons: IQRCodeMoons { /// /// 生成二维码 /// /// 存储内容 /// 像素大小 /// public Bitmap GetQRCode(string data, int pixel) { QRCodeGenerator generator = new QRCodeGenerator(); QRCodeData codeData = generator.CreateQrCode(data, QRCodeGenerator.ECCLevel.M, true); QRCoder.QRCode qrcode = new QRCoder.QRCode(codeData); Bitmap qrImage = qrcode.GetGraphic(pixel, Color.Black, Color.White, true); return qrImage; } /// /// 生成二维码并转成字节 /// /// /// /// public byte[] GetQrCodeByteArray(string data, int pixel = 4) { var bitmap = GetQRCode(data, pixel); using (MemoryStream ms = new MemoryStream()) { bitmap.Save(ms, ImageFormat.Jpeg); return ms.GetBuffer(); } } } 复制代码

直接把byte[] 字节返回给前端       前端通过img标签加载二维码

前端通过img标签加载字节中的图片   

1.在angular中     直接这样通过img加载会报错       提示不安全的url       需要对这个url进行消毒  进行安全监测

  注入消毒对象

private sanitizer: DomSanitizer

  对当前地址进行消毒     通过[src] 属性绑定的方式    不能通过src='{{}}'这种方式绑定值       如果对html本文进行绑定也需要通过bypassSecurityTrustHtml进行消毒

this.imageByte= this.sanitizer.bypassSecurityTrustResourceUrl("data:;base64,"+result.qrCode)

 

2.可以通过div   设置背景图片的方式避开这个问题    但是调用js打印的时候无法加载背景图片

 

 

一维码包BarcodeLib

生成一维码帮助类

public interface IBarCodeMoons : ISingletonDependency { Image GetBarCode(string data); byte[] GetBarCodeByteArray(string data); } 复制代码 /// /// 一维码 /// public class BarCodeMoons: IBarCodeMoons { /// /// 生成一维码 /// /// 存储内容 /// public Image GetBarCode(string data) { BarcodeLib.Barcode b = new BarcodeLib.Barcode(); Image img = b.Encode(BarcodeLib.TYPE.CODE128, data, Color.Black, Color.White, 290, 120); return img; } /// /// 生成一维码并转成字节 /// /// /// public byte[] GetBarCodeByteArray(string data) { var img = GetBarCode(data); using (MemoryStream ms = new MemoryStream()) { img.Save(ms, ImageFormat.Jpeg); return ms.GetBuffer(); } } } 复制代码 

 

出处:https://www.cnblogs.com/jiangchengbiao/p/11898577.html

=======================================================================================

C# 利用BarcodeLib.dll生成条形码(一维,zxing,QrCodeNet/dll二维码)

首先效果:

1:首先下载BarcodeLib.dll 下载地址 http://pan.baidu.com/share/link?shareid=2590968386&uk=2148890391&fid=1692834292 如果不存在了则自行搜索下载。

 

1.BarcodeLib.dll 一维条码库支持以下条码格式

UPC-A

UPC-E

UPC 2 Digit Ext.

UPC 5 Digit Ext.

EAN-13

JAN-13

EAN-8

ITF-14

Codabar

PostNet

Bookland/ISBN

Code 11

Code 39

Code 39 Extended

Code 93

LOGMARS

MSI

Interleaved 2 of 5

Standard 2 of 5

Code 128

Code 128-A

Code 128-B

Code 128-C

Telepen

然后项目中添加引用

 

  private void button6_Click(object sender, EventArgs e)   {   System.Drawing.Image image;   int width = 148, height = 55;   string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "BarcodePattern.jpg";   if (File.Exists(fileSavePath))   File.Delete(fileSavePath);   GetBarcode(height, width, BarcodeLib.TYPE.CODE128, "20131025-136", out image, fileSavePath);       pictureBox1.Image = Image.FromFile("BarcodePattern.jpg");   }   public static void GetBarcode(int height, int width, BarcodeLib.TYPE type, string code, out System.Drawing.Image image, string fileSaveUrl)   {   try   {   image = null;   BarcodeLib.Barcode b = new BarcodeLib.Barcode();   b.BackColor = System.Drawing.Color.White;//图片背景颜色   b.ForeColor = System.Drawing.Color.Black;//条码颜色   b.IncludeLabel = true;   b.Alignment = BarcodeLib.AlignmentPositions.LEFT;   b.LabelPosition = BarcodeLib.LabelPositions.BOTTOMCENTER;   b.ImageFormat = System.Drawing.Imaging.ImageFormat.Jpeg;//图片格式   System.Drawing.Font font = new System.Drawing.Font("verdana", 10f);//字体设置   b.LabelFont = font;   b.Height = height;//图片高度设置(px单位)   b.Width = width;//图片宽度设置(px单位)       image = b.Encode(type, code);//生成图片   image.Save(fileSaveUrl, System.Drawing.Imaging.ImageFormat.Jpeg);       }   catch (Exception ex)   {       image = null;   }   }

 

简单的写一下。详细的去 http://www.barcodelib.com/net_barcode/main.html 这里看。

利用 zxing.dll生成条形码和二维码  下载地址http://zxingnet.codeplex.com/

ZXing (ZebraCrossing)是一个开源的,支持多种格式的条形码图像处理库, 。使用该类库可以方便地实现二维码图像的生成和解析。

下载zxing.dll 项目参照引用

 

  {   MultiFormatWriter mutiWriter = new com.google.zxing.MultiFormatWriter();   ByteMatrix bm = mutiWriter.encode(txtMsg.Text, com.google.zxing.BarcodeFormat.QR_CODE, 300, 300);   Bitmap img = bm.ToBitmap();   pictureBox1.Image = img;       //自动保存图片到当前目录   string filename = System.Environment.CurrentDirectory + "\\QR" + DateTime.Now.Ticks.ToString() + ".jpg";   img.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);   lbshow.Text = "图片已保存到:" + filename;   }   catch (Exception ee)   { MessageBox.Show(ee.Message); }

 

利用 QrCodeNet.dll生成条形码和二维码  下载地址http://qrcodenet.codeplex.com/

下载QrCodeNet.dll 项目参照引用

 

  private void button2_Click(object sender, EventArgs e)   {   var codeParams = CodeDescriptor.Init(ErrorCorrectionLevel.H, textBox1.Text.Trim(), QuietZoneModules.Two, 5);       codeParams.TryEncode();       // Render the QR code as an image   using (var ms = new MemoryStream())   {   codeParams.Render(ms);       Image image = Image.FromStream(ms);   pictureBox1.Image = image;   if (image != null)   pictureBox1.SizeMode = image.Height > pictureBox1.Height ? PictureBoxSizeMode.Zoom : PictureBoxSizeMode.Normal;   }       }    ///       /// Class containing the description of the QR code and wrapping encoding and rendering.       ///       internal class CodeDescriptor       {           public ErrorCorrectionLevel Ecl;           public string Content;           public QuietZoneModules QuietZones;           public int ModuleSize;           public BitMatrix Matrix;           public string ContentType;               ///           /// Parse QueryString that define the QR code properties           ///           /// HttpRequest containing HTTP GET data           /// A QR code descriptor object           public static CodeDescriptor Init(ErrorCorrectionLevel level, string content, QuietZoneModules qzModules, int moduleSize)           {               var cp = new CodeDescriptor();                   Error correction level               cp.Ecl = level;               Code content to encode               cp.Content = content;               Size of the quiet zone               cp.QuietZones = qzModules;               Module size               cp.ModuleSize = moduleSize;               return cp;           }               ///           /// Encode the content with desired parameters and save the generated Matrix           ///           /// True if the encoding succeeded, false if the content is empty or too large to fit in a QR code           public bool TryEncode()           {               var encoder = new QrEncoder(Ecl);               QrCode qr;               if (!encoder.TryEncode(Content, out qr))                   return false;                   Matrix = qr.Matrix;               return true;           }               ///           /// Render the Matrix as a PNG image           ///           /// MemoryStream to store the image bytes into           internal void Render(MemoryStream ms)           {               var render = new GraphicsRenderer(new FixedModuleSize(ModuleSize, QuietZones));               render.WriteToStream(Matrix, System.Drawing.Imaging.ImageFormat.Png, ms);               ContentType = "image/png";           }       } 效果:

 

参考地址:

http://www.cnblogs.com/mzlee/archive/2011/03/19/Lee_Barcode.html

http://blog.163.com/smxp_2006/blog/static/588682542010215163803/

http://q.cnblogs.com/q/15253/

http://www.csharpwin.com/csharpspace/13364r9803.shtml

http://www.2cto.com/kf/201304/203035.html

 

出处:https://blog.csdn.net/kongwei521/article/details/17588825

=======================================================================================

C#打印标签(包括二维码和一位条码)

 

主要用到第三方库ZXing.net来生成各种条码。用PrintDocument来打印。很简单也很实用。

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO; using ZXing; using ZXing.Common; using ZXing.QrCode;

 

namespace Printtest {     public partial class Form1 : Form     {                 public Form1()         {             InitializeComponent();         }

 

     

 

        private void button1_Click(object sender, EventArgs e)         {             EncodingOptions encodeOption = new EncodingOptions();             encodeOption.Height = 50; // 高度、宽度             encodeOption.Width = 120;             ZXing.BarcodeWriter wr = new BarcodeWriter();             wr.Options = encodeOption;             wr.Format = BarcodeFormat.CODE_39; //  条形码规格             Bitmap img = wr.Write("D1234B678A"); // 生成图片             string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg";             img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);

 

        }

 

        private void button2_Click(object sender, EventArgs e)         {             ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions();             qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中文'乱码             qrEncodeOption.Height = 30;             qrEncodeOption.Width = 30;             qrEncodeOption.Margin = 1; // 设置周围空白边距

 

            // 2.生成条形码图片并保存             ZXing.BarcodeWriter wr = new BarcodeWriter();             wr.Format = BarcodeFormat.DATA_MATRIX; // 二维码             wr.Options = qrEncodeOption;             Bitmap img = wr.Write("D1234B678A");             string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + "test2" + ".jpg";             img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);             pictureBox1.Load(filePath);         }

 

        private void button3_Click(object sender, EventArgs e)         {             this.printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("Custom",220, 120);             //PrintPreviewDialog printPreviewDialog = new PrintPreviewDialog();             //printPreviewDialog.Document = printDocument1; 打印预览代码       try     {         printDocument1.Print();      }     catch(Exception excep)       {          MessageBox.Show(excep.Message, "打印出错", MessageBoxButtons.OK, MessageBoxIcon.Error);     }  }

        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)         {             Bitmap img = new Bitmap(Image.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + "test" + ".jpg"));             e.Graphics.DrawString("A1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 5, 5);             e.Graphics.DrawImage(img, 10, 30);             //e.Graphics.DrawString("D1234B678A", new Font(new FontFamily("黑体"), 11), System.Drawing.Brushes.Black, 10, 90);             e.Graphics.DrawImage(pictureBox1.Image, 150, 80);         }                    } }

 

最终效果:

 

 

出处:https://blog.csdn.net/mycoolme5/article/details/85323407

=======================================================================================

C#利用ZXing.Net生成条形码和二维码 这篇文章主要为大家详细介绍了C#利用ZXing.Net生成条形码和二维码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正。

什么是ZXing.Net?

ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口。而ZXing.Net是ZXing的端口之一。

在工程中引用ZXing.Net

在项目中,点击项目名称右键-->管理NuGet程序包,打开NuGet包管理器窗口,进行搜索下载即可,如下图所示:

ZXing.Net关键类结构图

包括Reader【识别图片中的条形码和二维码】) 和Writer【生成条形码和二维码到图片中】两部分,如下图所示:

涉及知识点:

BarcodeWriter 用于生成图片格式的条码类,通过Write函数进行输出。继承关系如上图所示。

BarcodeFormat 枚举类型,条码格式

QrCodeEncodingOptions 二维码设置选项,继承于EncodingOptions,主要设置宽,高,编码方式等信息。

MultiFormatWriter 复合格式条码写码器,通过encode方法得到BitMatrix。

BitMatrix 表示按位表示的二维矩阵数组,元素的值用true和false表示二进制中的1和0。

示例效果图

关键代码

如下所示,包含一维条码,二维条码,和带logo的条码

? 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 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Linq; using System.Text; using System.Threading.Tasks; using ZXing; using ZXing.Common; using ZXing.QrCode; using ZXing.QrCode.Internal;   namespace DemoQrCode {  ///  /// 描述:条形码和二维码帮助类  /// 时间:2018-02-18  ///  public class BarcodeHelper  {   ///   /// 生成二维码   ///   /// 内容   /// 宽度   /// 高度   ///   public static Bitmap Generate1(string text,int width,int height)   {    BarcodeWriter writer = new BarcodeWriter();    writer.Format = BarcodeFormat.QR_CODE;    QrCodeEncodingOptions options = new QrCodeEncodingOptions()    {     DisableECI = true,//设置内容编码     CharacterSet = "UTF-8", //设置二维码的宽度和高度     Width = width,     Height = height,     Margin = 1//设置二维码的边距,单位不是固定像素    };         writer.Options = options;    Bitmap map = writer.Write(text);    return map;   }     ///   /// 生成一维条形码   ///   /// 内容   /// 宽度   /// 高度   ///   public static Bitmap Generate2(string text,int width,int height)   {    BarcodeWriter writer = new BarcodeWriter();    //使用ITF 格式,不能被现在常用的支付宝、微信扫出来    //如果想生成可识别的可以使用 CODE_128 格式    //writer.Format = BarcodeFormat.ITF;    writer.Format = BarcodeFormat.CODE_39;    EncodingOptions options = new EncodingOptions()    {     Width = width,     Height = height,     Margin = 2    };    writer.Options = options;    Bitmap map = writer.Write(text);    return map;   }     ///   /// 生成带Logo的二维码   ///   /// 内容   /// 宽度   /// 高度   public static Bitmap Generate3(string text, int width, int height)   {    //Logo 图片    string logoPath = System.AppDomain.CurrentDomain.BaseDirectory + @"\img\logo.png";    Bitmap logo = new Bitmap(logoPath);    //构造二维码写码器    MultiFormatWriter writer = new MultiFormatWriter();    Dictionary hint = new Dictionary();    hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8");    hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);    //hint.Add(EncodeHintType.MARGIN, 2);//旧版本不起作用,需要手动去除白边         //生成二维码    BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, width+30, height+30, hint);    bm = deleteWhite(bm);    BarcodeWriter barcodeWriter = new BarcodeWriter();    Bitmap map = barcodeWriter.Write(bm);      //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)    int[] rectangle = bm.getEnclosingRectangle();         //计算插入图片的大小和位置    int middleW = Math.Min((int)(rectangle[2] / 3), logo.Width);    int middleH = Math.Min((int)(rectangle[3] / 3), logo.Height);    int middleL = (map.Width - middleW) / 2;    int middleT = (map.Height - middleH) / 2;      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,width,height);     //白底将二维码插入图片     g.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);     g.DrawImage(logo, middleL, middleT, middleW, middleH);    }    return bmpimg;   }     ///   /// 删除默认对应的空白   ///   ///   ///   private static BitMatrix deleteWhite(BitMatrix matrix)   {    int[] rec = matrix.getEnclosingRectangle();    int resWidth = rec[2] + 1;    int resHeight = rec[3] + 1;      BitMatrix resMatrix = new BitMatrix(resWidth, resHeight);    resMatrix.clear();    for (int i = 0; i < resWidth; i++)    {     for (int j = 0; j < resHeight; j++)     {      if (matrix[i + rec[0], j + rec[1]])       resMatrix[i, j]=true;     }    }    return resMatrix;   }  } }  

关于生成条形码和二维码的方式有很多,条码的种类也有很多种,每一种都有其对应的应用领域。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章: C#如何用ThoughtWorks生成二维码 C# 根据字符串生成二维码的实例代码 C#实现扫描枪扫描二维码并打印(实例代码) C#基于QRCode实现动态生成自定义二维码图片功能示例 C#生成带二维码的专属微信公众号推广海报实例代码 C#二维码图片识别代码 C# TSC打印二维码和条形码的实现方法 C# winform点击生成二维码实例代码 .NET C#利用ZXing生成、识别二维码/条形码 asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码实例 c# 生成二维码的示例

 

出处:https://www.jb51.net/article/136698.htm

=======================================================================================

根据上面的最后一篇文章的介绍,我自己修改了下,适用于自己的项目中:

namespace ConsoleQrCode { using System.Drawing; using System.Drawing.Imaging; using ZXing; using ZXing.Common; using ZXing.QrCode; using ZXing.QrCode.Internal; /// /// 描述:条形码和二维码帮助类 /// 时间:2018-02-18 /// public class BarcodeHelper { /// /// 生成一维条形码的数据矩阵 /// /// /// /// /// public static BitMatrix GenerateBitMatrix(string text, int width, int height) { BarcodeWriter writer = new BarcodeWriter(); //使用ITF 格式,不能被现在常用的支付宝、微信扫出来 //如果想生成可识别的可以使用 CODE_128 格式 //writer.Format = BarcodeFormat.ITF; writer.Format = BarcodeFormat.CODE_128; writer.Format = BarcodeFormat.QR_CODE; EncodingOptions options = new EncodingOptions() { Width = 20, Height = 10, GS1Format = false, PureBarcode = false, Margin = 0 }; writer.Options = options; BitMatrix bm = writer.Encode(text); //bm = deleteWhite(bm); return bm; } /// /// 生成一维条形码 /// /// 内容 /// 宽度 /// 高度 /// public static Bitmap GenerateBarCode(string text, int width, int height) { BarcodeWriter writer = new BarcodeWriter(); //使用ITF 格式,不能被现在常用的支付宝、微信扫出来 //如果想生成可识别的可以使用 CODE_128 格式 //writer.Format = BarcodeFormat.ITF; writer.Format = BarcodeFormat.CODE_128; EncodingOptions options = new EncodingOptions() { Width = width, Height = height, //GS1Format = false, //PureBarcode = true, Margin = 2 }; writer.Options = options; BitMatrix bm = writer.Encode(text); //Bitmap b = writer.Write(bm); Bitmap b = writer.Write(text); return b; } /// /// 生成二维码 /// /// 内容 /// 宽度 /// 高度 /// public static Bitmap GenerateQrCode(string text, int width, int height) { BarcodeWriter writer = new BarcodeWriter(); writer.Format = BarcodeFormat.QR_CODE; QrCodeEncodingOptions options = new QrCodeEncodingOptions() { DisableECI = true,//设置内容编码 CharacterSet = "UTF-8", //设置二维码的宽度和高度 Width = width, Height = height, Margin = 1//设置二维码的边距,单位不是固定像素 }; writer.Options = options; Bitmap map = writer.Write(text); return map; } /// /// 生成带Logo的二维码 /// /// 内容 /// 宽度 /// 高度 public static Bitmap GenerateQrCodeForLogo(string text, int width, int height) { //Logo 图片 string logoPath = System.AppDomain.CurrentDomain.BaseDirectory + @"\logo.jpg"; Bitmap logo = new Bitmap(logoPath); //构造二维码写码器 MultiFormatWriter writer = new MultiFormatWriter(); Dictionary hint = new Dictionary(); hint.Add(EncodeHintType.CHARACTER_SET, "UTF-8"); hint.Add(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); //hint.Add(EncodeHintType.MARGIN, 2);//旧版本不起作用,需要手动去除白边 //生成二维码 BitMatrix bm = writer.encode(text, BarcodeFormat.QR_CODE, width + 30, height + 30, hint); bm = deleteWhite(bm); BarcodeWriter barcodeWriter = new BarcodeWriter(); Bitmap map = barcodeWriter.Write(bm); //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸) int[] rectangle = bm.getEnclosingRectangle(); //计算插入图片的大小和位置 int middleW = Math.Min((int)(rectangle[2] / 3), logo.Width); int middleH = Math.Min((int)(rectangle[3] / 3), logo.Height); int middleL = (map.Width - middleW) / 2; int middleT = (map.Height - middleH) / 2; 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, width, height); //白底将二维码插入图片 g.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH); g.DrawImage(logo, middleL, middleT, middleW, middleH); } return bmpimg; } /// /// 删除默认对应的空白 /// /// /// private static BitMatrix deleteWhite(BitMatrix matrix) { int[] rec = matrix.getEnclosingRectangle(); int resWidth = rec[2] + 1; int resHeight = rec[3] + 1; BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); resMatrix.clear(); for (int i = 0; i < resWidth; i++) { for (int j = 0; j < resHeight; j++) { if (matrix[i + rec[0], j + rec[1]]) resMatrix[i, j] = true; } } return resMatrix; } } }

调用方式:

static void Main(string[] args) { Console.WriteLine(@"Type some text to QR code: "); string sampleText = Console.ReadLine(); sampleText = "MU8888 0731ANGB080"; DateTime dt = DateTime.Now; BarcodeHelper.GenerateBarCode(sampleText, 90, 50).Save("ZXing.Net" + dt.ToString("HHmmss-fff") + "_BarCode.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); BarcodeHelper.GenerateQrCode(sampleText, 200, 200).Save("ZXing.Net" + dt.ToString("HHmmss-fff") + "_QrCode.jpg", System.Drawing.Imaging.ImageFormat.Jpeg); //BarcodeHelper.GenerateQrCodeForLogo(sampleText, 200, 200).Save("ZXing.Net" + DateTime.Now.ToString("HHmmss-fff") + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); ZXing.Common.BitMatrix bm = BarcodeHelper.GenerateBitMatrix(sampleText, 1, 1); Console.WriteLine(); Console.WriteLine(); Console.BackgroundColor = ConsoleColor.White; for (int i = 0; i < qrCode.Matrix.Width + 2; i++) Console.Write(" ");//中文全角的空格符 Console.WriteLine(); for (int j = 0; j < bm.Height; j++) { for (int i = 0; i < bm.Width; i++) { //char charToPoint = qrCode.Matrix[i, j] ? '█' : ' '; Console.Write(i == 0 ? " " : "");//中文全角的空格符 Console.BackgroundColor = bm[i, j] ? ConsoleColor.Black : ConsoleColor.White; Console.Write(' ');//中文全角的空格符 Console.BackgroundColor = ConsoleColor.White; Console.Write(i == bm.Width - 1 ? " " : "");//中文全角的空格符 //Console.Write(""); } Console.WriteLine(); } for (int i = 0; i < qrCode.Matrix.Width + 2; i++) Console.Write(" ");//中文全角的空格符 Console.BackgroundColor = ConsoleColor.Black; Console.WriteLine(); Console.WriteLine(); Console.WriteLine(@"Press any key to quit."); Console.ReadKey(); }

 

=======================================================================================

.Net Core上也可以使用的二维码组件

我Fork了QRCoder,并且兼容了.Net Core,图形库用的是ZKWeb.System.Drawing

Github: https://github.com/zkweb-framework/QRCoder Nuget: https://www.nuget.org/packages/ZKWeb.Fork.QRCoder 使用方法请参考原github上的文档:https://github.com/codebude/QRCoder

 

出处:https://www.cnblogs.com/zkweb/p/6163506.html

=======================================================================================



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3