二维码编码解码器源码本源码实现可以在C#中使用的1D/2D编码解码器。条码的应用早已十分普遍二维码解码器,几乎所有商场上面的商品里面都印有条码;二维码也开始应用到好多场合,如列车票有二维码辨识、网易的首页有二维码图标,用户只须要用手机扫描一下就可以看见手机版网易的网址,免去了输入长串字符的麻烦。条码的标准:条码的标准有ENA条码、UPC条码、二五条码、交叉二五条码、库德巴条码、三九条码和128条码等,而商品上最常使用的就是EAN商品条码。EAN商品条码也称通用商品条码,由国际物品编码商会拟定,通用于世界各地,是目前国际上使用最广泛的一种商品条码。我国目前在国外实行使用的也是此类商品条码。EAN商品条码分为EAN-13(标准版)和EAN-8(减短版)两种。二维码的编码标准:全球现有的二维码多达200种以上,其中常见的技术标准有PDF417(美系标准),QRCode(日系标准),Code49,Code1616K,CodeOne,DM(韩系标准),GM(中国标准),CM(中国标准)等20余种。用得最多的是QRcode。下边利用google的开源项目zxing来实现1D/2D的编码和解码zxing的功能还是很强悍的,最初是用java编撰,并支持Android、ios、symbian等手机操作系统。
不过不知是何缘由,该官网连一个反例也没有,文档也是字典式的把所有类列下来,一点都没为读者考虑。下边我把假如使用zxing完成上图所示事例讲解一遍二维码解码器,供初学者参考:1.我们新建一个Winform测试项目;2.从官网下载zxing开源项目,大约16m的样子,解压缩后打开zxing-2.1csharp目录,将该目录拷贝到我们新建的Winform项目下(便捷调试和看源码,并非一定要这么);3.winform项目中添加对zxing项目的引用;4.按上图所示事例建好控件,“生成条码”的代码如下:其中须要注意BarcodeFormat参数,可以打开定义见到具体的编码方法,自己百度每种编码方法对输入的要求。这儿EAN_13编码要求是13位宽度的数字,而且满足:把所有奇数序号位上的数相乘求和,用求出的和乘3,再把所有偶数序号上的数相乘求和,用求出的和加上刚刚质数序号上的数,之后得出和能被10整除。(这个规则校准在UPCEANReader类的checkStandardUPCEANChecksum方式上面,倘若不须要,可以去除)注意编码问题,在com.google.zxing.qrcode.encoder.Encoder类中更改默认编码为utf-8,否则解码出现的是乱码。
System.StringDEFAULT_BYTE_MODE_ENCODING="UTF-8";此处之前是"ISO-8859-1",之所以改成UTF-8是由于,在解码的时侯程序会猜想可能的编码,假如猜想失败则默认是UTF-8,代码在com.google.zxing.qrcode.decoder.DecodedBitStreamParser类的guessEncoding方式中。所以此开源项目也缺乏全局性思索,连编码和解码的默认编码方法都不一致。经网友反映,还是有些英文会出现解码成乱码,而有些又可以,恐怕还是guessEncoding方式推测编码出现了误差,直接将guessEncoding方式写成返回UTF8就行了。4.实现图片解码,即把条码或二维码图片解码成其真实内容,其实在pc上应用不大,但可能只是还没发觉而已,代码如下:opFilePath是图片路径,你可以用openFileDialog控件打开文件来得到路径。注意:点解码按键前要先选择一张二维码或条码图片,即先点击“…”按键选择图片,之后再点“解码”按键。