文档章节

C# WinForm生成二维码,一维码,条形码 操作

o
 osc_y8yehimr
发布于 2019/03/20 20:10
字数 1090
阅读 75
收藏 0

精选30+云产品,助力企业轻松上云!>>>

1.1 条形码

1.2 条形码分类

一维条形码:只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息。

二维条形码:在水平和垂直方向的二维空间存储信息的条形码。

 

1.3 第三方类库:ZXing.Net

1.3.1 说明

ZXing 是一个可生成和读取 1D/2D(1维/2维) 条形码的开源类库。原先是Java版本,后由第三方衍生了支持QT、C++、.Net等版本。

.Net版本支持的平台:.Net 2.0, 3.5 and 4.0、Silverlight 4 and 5、Windows Phone 7.0, 7.1 and 8.0、Windows CE、Unity3D、Xamarin.Android 等等。

 在项目引用中的引用ZXing

进行联网下载

 

需要的引用

 

 

 

2. 一维码操作

如有看不懂下面下载源代码

2.1 介绍

一维条形码:只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息。

例图:

 

 

 

2.2 生成一维码

以生成EAN-13码制为例:

//生成一维码
private void button1_Click(object sender, EventArgs e)
{//设置条形码规格
EncodingOptions encoding = new EncodingOptions();
encoding.Height = 120;//设置宽高
encoding.Width = 200;
//生成条形码的图片并保存
BarcodeWriter wr = new BarcodeWriter();
wr.Options = encoding;//进行指定规格
wr.Format = BarcodeFormat.EAN_13;//条形码的规格 EAN13规格
Bitmap img = wr.Write(textBox1.Text);//生成图片
string filepath = AppDomain.CurrentDomain.BaseDirectory + "\\ENA_13" + this.textBox1.Text + ".jpg";
img.Save(filepath,System.Drawing.Imaging.ImageFormat.Jpeg);

//读取保存的图片
textBox2.Text = filepath;//设置路径
pictureBox1.Image = img;//存入图片
//弹出一维码图片的路径
MessageBox.Show("保存成功:" + filepath);
}

 

 

 

2.3 读取一维码

 

以读取EAN-13码制的图片为例:

private void button3_Click(object sender, EventArgs e)
{
//1设置读取条形码的规格
DecodingOptions decoding = new DecodingOptions();
decoding.PossibleFormats = new List<BarcodeFormat>()
{
BarcodeFormat.EAN_13
};//指定读取的格式

//2.进行读取操作
BarcodeReader br = new BarcodeReader();
br.Options = decoding;//指定规格
Result result = br.Decode(pictureBox1.Image as Bitmap);//进行读取条形码数字
if (result==null)
{
textBox1.Text = "读取失败";
MessageBox.Show("读取失败");
}
else
{
this.textBox1.Text = result.Text;
MessageBox.Show("读取成功,内容:" + result.Text);
}
}

 

3. 二维码操作

如有看不懂下面下载源代码

3.1 介绍

二维码:在水平和垂直方向的二维空间存储信息的条形码。

例图:

 

 

3.2 生成二维码

以生成QR码制为例:

//[生成二维码]
private void button2_Click(object sender, EventArgs e)
{
//1先设置二维码的规格
QrCodeEncodingOptions qr = new QrCodeEncodingOptions();
qr.CharacterSet = "UTF-8";//设置编码格式,否则会乱码
qr.Height = 200;
qr.Width = 200;
qr.Margin = 1;//设置二维码图片周围空白边距

//2生成条形码图片保存
BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.QR_CODE;//二维码
wr.Options = qr;//指定格式
Bitmap bitmap = wr.Write(textBox1.Text);//存放二维码
//设置图片的路径
string file = AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + textBox1.Text + ".jpg";
//进行保存
bitmap.Save(file,ImageFormat.Jpeg);


//3读取保存的图片
textBox2.Text = file;
pictureBox1.Image = bitmap;
MessageBox.Show("保存成功,"+file);

}

 

 

3.3 读取二维码

以读取QR码制的图片为例:

//[识别二维码]
private void button4_Click(object sender, EventArgs e)
{
//1设置读取条形码规格
DecodingOptions dr = new DecodingOptions();
dr.PossibleFormats = new List<BarcodeFormat>()
{
BarcodeFormat.QR_CODE
};

//2进行读取操作
BarcodeReader br = new BarcodeReader();
br.Options = dr;//指定规格
Result rs = br.Decode(pictureBox1.Image as Bitmap);
if (rs == null)
{
textBox1.Text = "读取失败";
MessageBox.Show("读取失败");
}
else
{

textBox1.Text = "读取成功";
MessageBox.Show("读取成功.内容为:"+rs.Text);
}
}

 

 

3.4 生成带Logo的二维码

二维码带有校验功能,故可以在中间区域展示一定尺寸的图片。

例图:

 

 

 

 

 

代码:

//[带图片的二维码]
private void button6_Click(object sender, EventArgs e)
{
//1设置QR二维码的规格
QrCodeEncodingOptions qr = new QrCodeEncodingOptions();
qr.CharacterSet = "UTF-8"; // 设置编码格式,否则读中文会乱码
qr.Height = 200;
qr.Width = 200;
qr.Margin = 1; // 设置二维码周围空白边距(可选)

//2生成条形码图片
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.QR_CODE; // 二维码
wr.Options = qr;
Bitmap img = wr.Write(this.textBox1.Text);


// 3.在二维码的Bitmap对象上绘制logo图片
Bitmap logoImg = Bitmap.FromFile(System.AppDomain.CurrentDomain.BaseDirectory + "\\logo.jpg") as Bitmap;
Graphics g = Graphics.FromImage(img);
Rectangle logoRec = new Rectangle(); // 设置logo图片的大小和绘制位置
logoRec.Width = img.Width / 6;
logoRec.Height = img.Height / 6;
logoRec.X = img.Width / 2 - logoRec.Width / 2; // 中心点
logoRec.Y = img.Height / 2 - logoRec.Height / 2;
g.DrawImage(logoImg, logoRec);

// 4.保存绘制后的图片
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + this.textBox1.Text + ".jpg";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);

// 5.读取保存的图片
this.textBox2.Text = filePath;
this.pictureBox1.Image = img;
MessageBox.Show("保存成功:" + filePath);
}

 

 

4. 打开图片

如有看不懂下面下载源代码

4.1 运行图

 

源代码下载地址

百度网盘:

链接:https://pan.baidu.com/s/1d21ZrtXx4QEE5cz4hk6xpw 
提取码:m601 

 

如不够详细请评论下面

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
c#生成二维码,一维码(条形码)

一、一维码 1.一维条码即指条码条和空的排列规则,常用的一维码的码制包括:EAN码、39码、交叉25码、UPC码、128码、93码,ISBN码,及Codabar(库德巴码)等。 2.一维码用处:可以识别商品的...

osc_y8yehimr
2019/03/20
7
0
C# 利用ZXing.Net来生成条形码和二维码

本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正。 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处...

osc_jjc36t9p
2018/02/18
5
0
c#教程之基于C#生成条形码操作知识汇总附源码下

1. 介绍 1.1 条形码 条形码(barcode):是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符。 1.2 条形码分类 可分为一维条形码和二维条形码: 一维条形码...

Andrewniu
2019/06/04
0
0
C#条形码

条形码的三种维码却别: ①一维条形码: 一维条形码只是在一个方向(一般是水平方向)表达信息,而在垂直方向则不表达任何信息,其一定的高度通常是为了便于阅读器的对准。 一维条形码的应用可...

osc_fmg49rzg
2019/03/20
3
0
C# 生成条形码、二维码随笔

一、什么是条形码 条形码(barcode)是将宽度不等的多个黑条和空白,按照一定的编码规则排列,用以表达一组信息的图形标识符.条形码可以标出物品的生产国、制造厂商、商品名称、生产日期、日期...

osc_fmg49rzg
2019/03/20
2
0

没有更多内容

加载失败,请刷新页面

加载更多

如果你失明了,你怎么编程? - How can you program if you're blind?

问题: Sight is one of the senses most programmers take for granted. 视觉是大多数程序员认为理所当然的感官之一。 Most programmers would spend hours looking at a computer monitor......

技术盛宴
19分钟前
10
0
如何删除使用Python的easy_install安装的软件包? - How do I remove packages installed with Python's easy_install?

问题: Python's easy_install makes installing new packages extremely convenient. Python的easy_install使安装新包非常方便。 However, as far as I can tell, it doesn't implement th......

fyin1314
49分钟前
8
0
如何将逗号分隔的字符串转换为数组? - How to convert a comma separated string to an array?

问题: I have a comma separated string that I want to convert into an array, so I can loop through it. 我有一个逗号分隔的字符串,我想将其转换成数组,因此可以循环遍历它。 Is the...

富含淀粉
今天
13
0
深源恒际:担心个人身份被冒用?不存在!

本文作者:c****t 近日,苟晶被冒名顶替身份参加高考的事件在社会各界掀起广泛热议。事件调查结果公布后,舆论风向逆转,吃瓜群众认为当事人夸大其词消费了公众情绪,一边对当事人所遭遇的不...

百度开发者中心
昨天
5
0
CKEditor 5 + SpringBoot实战(三):SpringData JPA数据持久化

在本系列的文章中,我将介绍如何在Spring Boot Application中使用CKEditor编辑器。介绍的内容包括基本环境的搭建,文件上传,SpringData JPA数据持久化,CKEditor5的安装,CKEditor图片上传,...

树下魅狐
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部