winform生成条形码和二维码(ZXing.Net)
首先在项目添加ZXing.Net。
工具-->Nuget包管理器-->Nuget程序包 在所搜栏输入 ZXing.Net 如下图:

添加完成后会看见:

效果图:

所有代码:
/// <summary>
/// 条形码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
System.Drawing.Image image;
int width = , height = ;
string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "TXM.jpg";
if (File.Exists(fileSavePath))
File.Delete(fileSavePath);
GetBarcode(height, width, BarcodeLib.TYPE.CODE128, DateTime.Now.ToString("yyyyMMddHHMMss"), out image, fileSavePath);
pictureBox1.Image = Image.FromFile("TXM.jpg");
} /// <summary>
/// 条形码
/// </summary>
/// <param name="height"></param>
/// <param name="width"></param>
/// <param name="type"></param>
/// <param name="code"></param>
/// <param name="image"></param>
/// <param name="fileSaveUrl"></param>
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;//code的显示位置
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);
image.Dispose();
}
catch (Exception ex)
{ image = null;
}
} /// <summary>
/// 二维码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
//生成二维码
// Generate1("这是二维码"); //生成带logo的二维码
Generate3("这是二维码"); } /// <summary>
/// 生成二维码,保存成图片
/// </summary>
static void Generate1(string text)
{
BarcodeWriter writer = new BarcodeWriter();
writer.Format = BarcodeFormat.QR_CODE;
QrCodeEncodingOptions options = new QrCodeEncodingOptions();
options.DisableECI = true;
//设置内容编码
options.CharacterSet = "UTF-8";
//设置二维码的宽度和高度
options.Width = ;
options.Height = ;
//设置二维码的边距,单位不是固定像素
options.Margin = ;
writer.Options = options; Bitmap map = writer.Write(text);
string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "EWM.jpg";
if (File.Exists(fileSavePath))
File.Delete(fileSavePath);
map.Save(fileSavePath, ImageFormat.Png);
map.Dispose();
} /// <summary>
/// 读取二维码
/// 读取失败,返回空字符串
/// </summary>
/// <param name="filename">指定二维码图片位置</param>
static string Read1(string filename)
{
BarcodeReader reader = new BarcodeReader();
reader.Options.CharacterSet = "UTF-8";
Bitmap map = new Bitmap(filename);
Result result = reader.Decode(map);
return result == null ? "" : result.Text;
} //读取内容
private void button3_Click(object sender, EventArgs e)
{
//读取二维码
// string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "BarcodePattern11.jpg"; //读取带logo的二维码
string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "logo_Img.jpg"; //读取条形码码
//string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "TXM.jpg";
string result = Read1(fileSavePath);
label1.Text = result;
} /// <summary>
/// 生成带Logo的二维码
/// </summary>
/// <param name="text"></param>
public void Generate3(string text)
{ //Logo 图片
Bitmap logo = new Bitmap(AppDomain.CurrentDomain.BaseDirectory + "d06.png");
//构造二维码写码器
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, , , hint);
BarcodeWriter barcodeWriter = new BarcodeWriter();
Bitmap map = barcodeWriter.Write(bm); //获取二维码实际尺寸(去掉二维码两边空白后的实际尺寸)
int[] rectangle = bm.getEnclosingRectangle(); //计算插入图片的大小和位置
int middleW = Math.Min((int)(rectangle[] / 3.5), logo.Width);
int middleH = Math.Min((int)(rectangle[] / 3.5), logo.Height);
int middleL = (map.Width - middleW) / ;
int middleT = (map.Height - middleH) / ; //将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, , );
}
//将二维码插入图片
Graphics myGraphic = Graphics.FromImage(bmpimg);
//白底
myGraphic.FillRectangle(Brushes.White, middleL, middleT, middleW, middleH);
myGraphic.DrawImage(logo, middleL, middleT, middleW, middleH); //保存成图片
string fileSavePath = AppDomain.CurrentDomain.BaseDirectory + "logo_Img.jpg";
if (File.Exists(fileSavePath))
File.Delete(fileSavePath);
bmpimg.Save(fileSavePath, ImageFormat.Png);
pictureBox2.Load(fileSavePath);
map.Dispose();
}
winform生成条形码和二维码(ZXing.Net)的更多相关文章
- C# 利用ZXing.Net来生成条形码和二维码
本文是利用ZXing.Net在WinForm中生成条形码,二维码的小例子,仅供学习分享使用,如有不足之处,还请指正. 什么是ZXing.Net? ZXing是一个开放源码的,用Java实现的多种格式的 ...
- C#利用Zxing.net生成条形码和二维码并实现打印的功能
开篇:zxing.net是.net平台下编解条形码和二维码的工具. 下载地址:http://pan.baidu.com/s/1kTr3Vuf Step1:使用VS2010新建一个窗体程序项目: ...
- 使用谷歌Z生成条形码以及二维码
下载地址:http://zxingnet.codeplex.com/ zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便. 首先下载二进制dll文件,引入工程: using Sy ...
- ZXing生成条形码、二维码、带logo二维码
采用的是开源的ZXing,Maven配置如下,jar包下载地址,自己选择版本下载,顺便推荐下Maven Repository <!-- https://mvnrepository.com/art ...
- C#Zxing.net生成条形码和二维码
下载Zxing.net官网:https://archive.codeplex.com/?p=zxingnet 或者去VS程序包下载 封装好的代码: using System; using System ...
- iOS开发——生成条形码,二维码
- (void)viewDidLoad { [super viewDidLoad]; self.imageView.image = [self generateBarCode:@"15248 ...
- 使用js生成条形码以及二维码
一.用js生成条形码这种业务场景不是很常见的,最近刚好又接到这种需求 Google一下,发现github还真有这方面的轮子,感谢github,省去了我们很多造轮子的过程, 好了言归正传,首先引入jsb ...
- ZXing 生成、读取二维码(带logo)
前言 ZXing,一个支持在图像中解码和生成条形码(如二维码.PDF 417.EAN.UPC.Aztec.Data Matrix.Codabar)的库.ZXing(“zebra crossing”)是 ...
- ZXing 生成、解析二维码图片的小示例
概述 ZXing 是一个开源 Java 类库用于解析多种格式的 1D/2D 条形码.目标是能够对QR编码.Data Matrix.UPC的1D条形码进行解码. 其提供了多种平台下的客户端包括:J2ME ...
随机推荐
- 爬虫基础01-day23
写在前面 上课第23天,打卡: 每天进步一点,开心一点 ^_^ 爬虫 - 基本操作 概要: - 发送Http请求,Python Http请求,requests - 提取指定信息,Python 正则 ...
- interactivePopGestureRecognizer --- iOS侧滑的问题
苹果一直都在人机交互中尽力做到极致,在iOS7中,新增加了一个小小的功能,也就是这个api:self.navigationController.interactivePopGestureRecogni ...
- luogu 2704 炮兵阵地 状压dp
状压的基础题吧 第一次看感觉难上天,后来嘛就.. 套路:先根据自身状态筛出可行状态,再根据地图等其他限制条件筛选适合的状态加入答案 f i,j,k 分别代表 行数,本行状态,上行状态,再累加答案即可 ...
- APPLE-SA-2019-3-25-7 Xcode 10.2
APPLE-SA-2019-3-25-7 Xcode 10.2 Xcode 10.2 is now available and addresses the following: KernelAvail ...
- select样式设计
举例: select { color: blue; /*去掉边框*/ border: none; outline: none; /*去掉箭头*/ -webkit-appearance: none; / ...
- 前端面试(二):N轮面试
一面 在一面中要掌握什么技巧,主要考察前端开发的基础知识 1.面试技巧.页面布局类 页面布局小结: 语义化掌握到位 页面布局理解深刻 CSS基础知识扎实 思维灵活且积极上进 代码书写规范 2.CSS盒 ...
- 第20月第4天 pycharm utf-8
1.运行python %run a.py 运行 https://blog.csdn.net/little_bobo/article/details/78982412 2.UnicodeDecodeEr ...
- js 中编码(encode)和解码(decode)的三种方法
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent 下 ...
- Educational Codeforces Round 47 (Rated for Div. 2)E.Intercity Travelling
题目链接 大意:一段旅途长度N,中间可能存在N-1个休息站,连续走k长度时,疲劳值为a1+a2+...+aka_1+a_2+...+a_ka1+a2+...+ak,休息后a1a_1a1开始计, ...
- NIO的epoll空轮询bug
JDK NIO的bug,例如epoll bug,它会导致Selector空轮询,最终导致CPU 100%. Selector BUG出现的原因 若Selector的轮询结果为空,也没有wakeup或新 ...