C#的zxing条码工具
来源:互联网 发布:舰娘国服 知乎 编辑:程序博客网 时间:2024/06/11 19:27
注:使用此工具类时需要引入zxing.dll工具。
using System;
using System.Collections.Generic;using System.Linq;
using System.Text;
using ZXing.Common;
using ZXing;
using ZXing.QrCode;
using System.Collections;
using ZXing.QrCode.Internal;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace www.xinduofen.com
{
/// <summary>
/// 二维码和条形码的生成与解析
/// </summary>
class MyZxingTool
{
/// <summary>
/// 生成二维码并保存到内存中(UTF-8编码)
/// </summary>
/// <param name="contents">二维码字符串内容</param>
/// <param name="width">二维码宽度</param>
/// <param name="height">二维码高度</param>
/// <returns>返回为null代表生成失败</returns>
public static Bitmap encodeQRCode(String contents, int width, int height)
{
Bitmap bitmap = null;
try {
EncodingOptions options = new QrCodeEncodingOptions
{
DisableECI = true,
CharacterSet = "UTF-8",// 指定编码格式
ErrorCorrection = ErrorCorrectionLevel.M,// 指定纠错等级
Width = width,
Height = height
};
BarcodeWriter writer = new BarcodeWriter();
writer.Options = options;
writer.Format = BarcodeFormat.QR_CODE;//二维码
bitmap = writer.Write(contents);//二维码生成成功
}catch(Exception e){
System.Console.WriteLine(e.Message);
}
return bitmap;
}
/// <summary>
/// 解析二维码
/// </summary>
/// <param name="imgPath">二维码图片保存路径</param>
/// <returns>返回为null代表解析失败</returns>
public static String decodeQRCode(String imgPath) {
String resultStr = null;
try {
BarcodeReader reader = new BarcodeReader();
reader.AutoRotate = true;
//reader.Options.CharacterSet = "UTF-8";
Result result = reader.Decode(new Bitmap(Image.FromFile(imgPath)));
resultStr = result.Text;
} catch (Exception e) {
System.Console.WriteLine(e.Message);
}
return resultStr;
}
/// <summary>
/// 解析二维码
/// </summary>
/// <param name="bitmap">二维码缓存图片</param>
/// <returns>返回为null代表解析失败</returns>
public static String decodeQRCode(Bitmap bitmap)
{
String resultStr = null;
try
{
BarcodeReader reader = new BarcodeReader();
reader.AutoRotate = true;
//reader.Options.CharacterSet = "UTF-8";
Result result = reader.Decode(bitmap);
resultStr = result.Text;
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
return resultStr;
}
/// <summary>
/// 生成条形码并保存到内存中(code128编码)
/// </summary>
/// <param name="contents">条形码字符串内容</param>
/// <param name="width">条形码宽度</param>
/// <param name="height">条形码高度</param>
/// <returns>返回为null代表生成失败</returns>
public static Bitmap encodeBarCode(String contents, int width, int height)
{
Bitmap bitmap = null;
try
{
EncodingOptions options = new QrCodeEncodingOptions
{
Width = width,
Height = height
};
BarcodeWriter writer = new BarcodeWriter();
writer.Options = options;
writer.Format = BarcodeFormat.CODE_128;//条形码
bitmap = writer.Write(contents);//条形码生成成功
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
return bitmap;
}
/// <summary>
/// 解析条形码(支持多种编码格式)
/// </summary>
/// <param name="imgPath">条形码图片保存路径</param>
/// <returns>返回为null代表解析失败</returns>
public static String decodeBarCode(String imgPath) {
String resultStr = null;
try
{
BarcodeReader reader = new BarcodeReader();
reader.AutoRotate = true;
Result result = reader.Decode(new Bitmap(Image.FromFile(imgPath)));
resultStr = result.Text;
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
return resultStr;
}
/// <summary>
/// 解析条形码(支持多种编码格式)
/// </summary>
/// <param name="bitmap">条形码缓存图片</param>
/// <returns>返回为null代表解析失败</returns>
public static String decodeBarCode(Bitmap bitmap)
{
String resultStr = null;
try
{
BarcodeReader reader = new BarcodeReader();
reader.AutoRotate = true;
Result result = reader.Decode(bitmap);
resultStr = result.Text;
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
return resultStr;
}
/// <summary>
/// 保存缓存图片到指定的文件位置
/// </summary>
/// <param name="bitmap">缓存图片</param>
/// <param name="imageFilePath">指定的文件位置</param>
/// <param name="imageFormat">用于保存图片的格式,比如:ImageFormat.Jpeg、ImageFormat.Png</param>
/// <returns>返回为true代表保存成功</returns>
public static Boolean saveImageToFile(Bitmap bitmap, String imageFilePath, ImageFormat imageFormat)
{
Boolean result = false;//初始化为"保存失败"
try
{
bitmap.Save(imageFilePath, imageFormat);
result = true;//二维码生成成功
}catch(Exception e){
System.Console.WriteLine(e.Message);
}
return result;
}
/// <summary>
/// 将Bitmap对象转换成对应格式imageFormat的图片,再将得到的图片数据流转换成Base64字符串
/// </summary>
/// <param name="bitmap">Bitmap对象</param>
/// <param name="imageFormat">用于保存图片的格式,比如:ImageFormat.Jpeg、ImageFormat.Png</param>
/// <returns>返回为null代表转换失败</returns>
public static String getBase64StringFromImage(Bitmap bitmap, ImageFormat imageFormat)
{
String base64String = null;
MemoryStream outCache = null;
try
{
outCache = new MemoryStream();
bitmap.Save(outCache, imageFormat);
byte[] data = outCache.ToArray();
base64String = System.Convert.ToBase64String(data, 0, data.Length);
}
catch (Exception e)
{
System.Console.WriteLine(e.Message);
}
finally {
if (outCache!=null)
{
outCache.Close();
outCache = null;
}
}
return base64String;
}
}
}
阅读全文
0 0
- C#的zxing条码工具
- ZXing.Net C#条码 二维码生成库
- zxing 实现二维条码的读写!
- zxing读取一维条码的原理
- 基于ZXing项目开发的条码扫描横屏
- zxing设置条码两边空白(EncodeHintType.MARGIN)无效的分析
- 修改zxing连续扫描条码和二维码的怪问题
- ZXing.Net.Mobile无法识别较大的条码
- c# 39条码的生成
- 生成二维条码的书签工具
- C#打印条码操作的实例浅析
- c#编程 39条码的生成代码
- C#打印条码操作的实例浅析
- C# 红外条码扫描器的另类使用
- 各种条码的字体编码C#源码
- C#打印条码的几种方式
- C#打印条码的几种方式
- C#打印条码的几种方式
- Alpha、Beta、RC、GA版本的区别
- java虚拟机---java内存模型
- FFMPEG学习【libavfilter】(一)
- 【Bzoj1303】中位数图
- servlet接收POST提交的中文传入数据库后乱码
- C#的zxing条码工具
- Linux 下 JDK + Eclipse + PyDev 安装与配置
- C primer plus 第四章总结
- 安卓应用升级、捕捉异常上报、运营统计
- 读
- 设计模式之适配器模式
- AT24CXX、DS1302、红外HS0038 20170610 周六
- 设计模式之迭代器模式
- 简单编码