zxing二维码的生成与解码(C#)

ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码。目标是能够对QR编码、Data Matrix、UPC的1D条形码进行解码。 其提供了多种平台下的客户端包括:J2ME、J2SE和Android。

首先,在其官网http://code.google.com/p/zxing/上去下载源码

编译在其csharp目录下打开zxing.csproj文件,新建一个工程。在编译之前修改两个错误:

 

源代码中有两处UTF-8的问题,会导致乱码,

其一:com.google.zxing.qrcode.encoder.encoder类中的

internal const System.String DEFAULT_BYTE_MODE_ENCODING = "ISO-8859-1";

此处,将ISO-8859-1改为UTF-8

其二:com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的成员

private const System.String UTF8 = "UTF8";

应将UTF8改为UTF-8

 

修改完之后,点重新生成编译出新的dll文件。

将zxing.dll考入到你自己所需要的工程中,并添加引用。

这样自己就可以试用了,主要是二维码的生成和识别两个用处:

 

二维码的生成:

using com.google.zxing.qrcode;
using com.google.zxing;
using com.google.zxing.common;
using ByteMatrix = com.google.zxing.common.ByteMatrix;
using EAN13Writer = com.google.zxing.oned.EAN13Writer;
using EAN8Writer = com.google.zxing.oned.EAN8Writer;
using MultiFormatWriter = com.google.zxing.MultiFormatWriter;
private void button1_Click(object sender, EventArgs e)
{string content = textBox1.Text;
ByteMatrix byteMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, 200, 200);
Bitmap bitmap = toBitmap(byteMatrix);
pictureBox1.Image = bitmap;
//writeToFile(byteMatrix, System.Drawing.Imaging.ImageFormat.Png, sFD.FileName);
//SaveFileDialog sFD = new SaveFileDialog();
//sFD.DefaultExt = "*.png|*.png";
//sFD.AddExtension = true;
//try
//{
// if (sFD.ShowDialog() == DialogResult.OK)
// {
// }
//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.Message);
//}

}
public static void writeToFile(ByteMatrix matrix, System.Drawing.Imaging.ImageFormat format, string file)
{
Bitmap bmap = toBitmap(matrix);
bmap.Save(file, format);
}
public static Bitmap toBitmap(ByteMatrix matrix) 
{ 
int width = matrix.Width; 
int height = matrix.Height; 
Bitmap bmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb); 
for (int x = 0; x < width; x++) 
{ 
for (int y = 0; y < height; y++) 
{ 
bmap.SetPixel(x, y, matrix.get_Renamed(x, y) != -1 ? ColorTranslator.FromHtml("0xFF000000") : ColorTranslator.FromHtml("0xFFFFFFFF")); 
} 
} 
return bmap; 
}

二维码的读取识别:

private void button1_Click(object sender, EventArgs e) 
{ 
if (this.openFileDialog1.ShowDialog() != DialogResult.OK) 
{ 
return; 
} 
Image img = Image.FromFile(this.openFileDialog1.FileName); 
Bitmap bmap; 
try 
{ 
bmap = new Bitmap(img); 
} 
catch (System.IO.IOException ioe) 
{ 
MessageBox.Show(ioe.ToString()); 
return; 
} 
if (bmap == null) 
{ 
MessageBox.Show("Could not decode image"); 
return; 
} 
LuminanceSource source = new RGBLuminanceSource(bmap, bmap.Width, bmap.Height); 
com.google.zxing.BinaryBitmap bitmap = new com.google.zxing.BinaryBitmap(new COMMON.HybridBinarizer(source)); 
Result result; 
try 
{ 
result = new MultiFormatReader().decode(bitmap); 
} 
catch(ReaderException re) 
{ 
MessageBox.Show(re.ToString()); 
return; 
} MessageBox.Show(result.Text); 
}

 

转载于:https://www.cnblogs.com/hnsongbiao/p/9145285.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465785.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32项目(一) —— 展示车座椅

STM32项目&#xff08;一&#xff09; —— 展示车座椅 宗旨&#xff1a;技术的分享是有限的&#xff0c;分享的精神是无限的。功能&#xff1a;模拟人开车时&#xff0c;ACR和ABL的变化。 主控制器&#xff1a;STM32&#xff08;CAN&#xff0c;串口&#xff0c;网口&#xff…

一文读懂 | CPU负载均衡实现

在《一文读懂 | 进程怎么绑定 CPU》这篇文章中介绍过&#xff0c;在 Linux 内核中会为每个 CPU 创建一个可运行进程队列&#xff0c;由于每个 CPU 都拥有一个可运行进程队列&#xff0c;那么就有可能会出现每个可运行进程队列之间的进程数不一样的问题&#xff0c;这就是所谓的…

NA-NP-IE系列实验28:HDLC 和PPP 封装

实验28:HDLC 和PPP 封装<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />1. 实验目的通过本实验&#xff0c;读者可以掌握如下技能&#xff1a;&#xff08;1&#xff09; 串行链路上的封装概念&#xff08;2&#xff09; HDLC 封…

使用git提交到github,每次都要输入用户名和密码的解决方法

使用git提交文件到github,每次都要输入用户名和密码&#xff0c;操作起来很麻烦&#xff0c;以下方法可解决&#xff0c;记录以下。 原因&#xff1a;在clone 项目的时候&#xff0c;使用了 https方式&#xff0c;而不是ssh方式。 默认clone 方式是&#xff1a;https 切换到&am…

回家一趟

大家好&#xff0c;我是写代码的篮球球痴。最近休年假回了一趟家里&#xff0c;决定回来也比较仓促&#xff0c;那天在公司的36楼发呆&#xff0c;觉得心里有点东西&#xff0c;然后就特别想回家看看。从晚上8&#xff1a;30出发&#xff0c;到第二天的中午&#xff0c;我从广东…

STM32项目(二) —— 车灯测试台架

STM32 —— 车灯测试台架 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; &#xff08;1&#xff09;、点灯控制器&#xff1a;在线节拍&#xff0c;离线节拍&#xff1b; &#xff08;2&#xff09;、PWM控制盒&#xff1a;在线PWM&…

Spring MVC 使用介绍(二)—— DispatcherServlet

一、Hello World示例 1、引入依赖 <dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope> </dependency> <dependency&g…

单片机如何检测市电通断?(应用甚广~)

我们在topemic网站上分享过一篇题为"单片机检测220V交流电通断电路"的文章&#xff0c;目前有近万次阅读&#xff0c;在这里做个总结分享给没有读过该文的公众号朋友。废话不多说&#xff0c;直接上图&#xff1a;该电路工作原理如下&#xff1a;当220V断开时&#x…

STM32项目(三)——通用LIN控制器

STM32——通用LIN控制器 宗旨&#xff1a;技术的分享是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; LIN马达控制器&#xff1a;AFS&#xff08;DHLAFL&#xff09;——弯道辅助照明系统 DHL&#xff1a;上极限&#xff0c;下极限&#xff0c;零位&#xff0c;马…

精妙的SQL语句收藏

说明&#xff1a;复制表(只复制结构,源表名&#xff1a;a 新表名&#xff1a;b)select * into b from a where 1<>1说明&#xff1a;拷贝表(拷贝数据,源表名&#xff1a;a 目标表名&#xff1a;b)insert into b(a, b, c) select d,e,f from b;说明&#xff1a;日程安排提…

hihoCoder #1758 加减

$\DeclareMathOperator{\lowbit}{lowbit}$ 题目大意 对于一个数 $x$&#xff0c;设它最低位的 1 是第 $i$ 位&#xff0c;则 $\lowbit(x)2i$ 。 例如 $\lowbit(5)1$&#xff0c;$\lowbit(12)4$ 。 定义对 $x$的一次变换为&#xff1a;有 50% 的概率变成 $x\lowbit(x)$&#xff…

十年经验工程师为何被裁?

事件去年年底&#xff0c;公司来了一位工作十余年的工程师&#xff0c;据说软件硬件都会&#xff0c;应聘的岗位是XX算法工程师。比较巧的是&#xff0c;这位工程师是我上一家公司隔壁部门的同事。我们均来自大厂&#xff0c;但是是国企&#xff0c;二线城市。所以尽管他在前公…

飞康CEO:敢于向传统的灾备法则说“不”

近日&#xff0c;借美国飞康软件公司创办人兼首席执行官胡艾瑞徵先生访华期间&#xff0c;比特网记者对其进行了独家专访。 飞康软件公司成立于2000年&#xff0c;在过去的9年中&#xff0c; IPStor已经发展成为飞康包括整合重复数据删除功能的虚拟磁带库(VTL)、持续数据保护(C…

STM32项目(四)——暗室网关

STM32项目&#xff08;四&#xff09;——暗室网关 宗旨&#xff1a;技术的学习是有限的&#xff0c;分享的精神是无限的。 需求&#xff1a; 采集环境箱温度&#xff0c;采集20个通道的电流值&#xff0c;点灯节拍控制&#xff1b;&#xff08;上位机服务器端复杂&#xff09…

做10多年测试的老何

题图&#xff1a;老何是我的同事&#xff0c;他也喜欢篮球&#xff0c;因为篮球&#xff0c;我们两的话题比较多。老何做了十几年的测试工作。我们比较有猿粪的是&#xff0c;12年我在TCL&#xff0c;当时他也在TCL工业研究院&#xff0c;我们两的办公室也就相邻两栋楼。不过那…

[紧急问题和解决方案] 无法打开被权限管理服务(RMS)加密的Office 2003文档

在2009年12月11号以后&#xff0c;我们发现了关于“无法打开被‘权限管理服务’&#xff08;RMS&#xff09;加密的Office 2003文档”的紧急问题。为了避免对您的业务任何可能的影响&#xff0c;特提前向您介绍症状和解决方案如下&#xff1a;<?xml:namespace prefix o ns…

STM32项目(五)——智能回收箱

智能回收箱 智能回收箱功能&#xff1a; 智能废旧回收箱定位&#xff08;GPRS/GPS&#xff09;。 回收箱异常开门报警、重量超限报警、容量超限报警&#xff0c;电量低下报警等&#xff08;信息/邮件&#xff09;。 废旧物品投递时先刷卡&#xff0c;显示卡号等信息确认无误后可…

推荐一个C++大佬

这里向大家推荐一个优质C公众号&#xff0c;号主程序喵&#xff0c;硕士毕业&#xff0c;浸淫C多年&#xff0c;帮助过不少C新手入门和进阶&#xff0c;可以说一句“精通C”啦。他搞过人脸识别&#xff0c;研究过自动驾驶&#xff0c;人生就是不断的挑战自我&#xff0c;现在从…

浮点数保留n位小数

p 1.234 p round(p,2) print(p) # 1.23 #round(你要操作的数,保留几位)转载于:https://www.cnblogs.com/liangying666/p/9161711.html

Silverlight HLSL实现背景滚动

一个Silverlight HLSL的简单例子&#xff0c;通过HLSL实现图片上的像素点的的水平移动&#xff0c;从而实现一个滚动背景的效果。 首先把Shader写出来吧。我这里借助了Shazzam &#xff0c;界面如下&#xff1a; 下面是我的HLSL&#xff1a; sampler2D input : register(s0);//…