using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using ZXing;
using ZXing.Common;
namespace WindowsFormsApp2
{
//zxing.net是.net平台下编解条形码和二维码的工具,使用非常方便。
//首先下载二进制dll文件,引入项目
//1.打开vs
//2.点击工具
//3.点击NuGet包管理器
//4.随后点击管理解决方案的NuGet程序包
//5.随后点击预览搜索ZXing.NET下载安装即可
public class ZXingHelper
{
///
/// 生成EAN-12码制条码
///
/// 生成的内容
///
public Bitmap CreateBarCode(string txtContext)
{
//只能输入12个数字
// 1.设置条形码规格
EncodingOptions encodeOption = new EncodingOptions();
encodeOption.Height = 130; // 必须制定高度、宽度
encodeOption.Width = 240;
// 2.生成条形码图片并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Options = encodeOption;
wr.Format = BarcodeFormat.EAN_13; // 条形码规格:EAN13规格:12(无校验位)或13位数字
Bitmap img = wr.Write(txtContext); // 生成图片
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\EAN_13-" + txtContext + ".jpg";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
return img;
}
///
/// 读取条码
///
/// 需要读取的条码
///
public DialogResult ReadBarCode( Image pictureImage)
{
// 1.设置读取条形码规格
DecodingOptions decodeOption = new DecodingOptions();
decodeOption.PossibleFormats = new List()
{
BarcodeFormat.EAN_13,
};
// 2.进行读取操作
ZXing.BarcodeReader br = new BarcodeReader();
br.Options = decodeOption;
ZXing.Result rs = br.Decode(pictureImage as Bitmap);
if (rs == null)
{
return MessageBox.Show("读取失败");
}
else
{
return MessageBox.Show("读取成功,内容:" + rs.Text);
}
}
///
/// 生成QR二维码
///
/// 需要生成的内容
///
public Bitmap CreateQRCode(string txtContext)
{
// 1.设置QR二维码的规格
ZXing.QrCode.QrCodeEncodingOptions qrEncodeOption = new ZXing.QrCode.QrCodeEncodingOptions();
qrEncodeOption.CharacterSet = "UTF-8"; // 设置编码格式,否则读取'中文'乱码
qrEncodeOption.Height = 200;
qrEncodeOption.Width = 200;
qrEncodeOption.Margin = 1; // 设置周围空白边距
// 2.生成条形码图片并保存
ZXing.BarcodeWriter wr = new BarcodeWriter();
wr.Format = BarcodeFormat.QR_CODE; // 二维码
wr.Options = qrEncodeOption;
Bitmap img = wr.Write(txtContext);
string filePath = System.AppDomain.CurrentDomain.BaseDirectory + "\\QR-" + txtContext + ".jpg";
img.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
return img;
}
public DialogResult ReadQRCode(Image pictureImage)
{
// 1.设置读取二维码规格
DecodingOptions decodeOption = new DecodingOptions();
decodeOption.PossibleFormats = new List() {
BarcodeFormat.QR_CODE,
};
// 2.进行读取操作
ZXing.BarcodeReader br = new BarcodeReader();
br.Options = decodeOption;
ZXing.Result rs = br.Decode(pictureImage as Bitmap);
if (rs == null)
{
return MessageBox.Show("读取失败");
}
else
{
return MessageBox.Show("读取成功,内容:" + rs.Text);
}
}
}
}