手机版

免费开源的DotNet二维码操作组件ThoughtWorks详解 二维码(介绍 NET组件)

时间:2021-09-06 来源:互联网 编辑:宝哥软件园 浏览:

我们的生活中有一样东西几乎要变成另一种电子“身份证”,那就是二维码。无论是在软件开发过程中,还是在普通用户的日常生活中,二维码几乎是不可或缺的。二维条码又称二维条码,是基于一维条码的可读条码。该设备扫描二维条形码,通过识别记录在条形码长度和宽度中的二进制数据,可以获得其中包含的信息。与一维条形码相比,二维码记录了更复杂的数据,如图片和网络链接。

今天,我们介绍一个免费开源的二维码操作组件。思想工作。二维码组件可以高效稳定地生成我们需要的二维码。接下来,我们将详细了解这个组件。

一、思想工作概述。二维码组件:

二维码库是一个. NET组件,可用于编码和解码二维码。二维码是来自日本的二维条形码。现在,它被广泛应用于广泛的工业领域。用于车辆零件跟踪和库存管理。QR代表“快速反应”。它由日本公司Denso-Wave于1994年创立,旨在高速解码内容。如今,二维码被用于手机,以方便数据输入。二维码也可以打印在名片上,或者显示在任何显示器上,然后只要手机有读取二维码的软件,就可以被手机捕获。二维码库提供的功能包括:将内容编码成二维码图像,可以JPEG、GIF、PNG或位图格式保存;解码二维码图像。

该库可用于任何。NET 2.0 Windows应用程序、ASP.NET web应用程序或Windows移动设备应用程序。以下是该组件的声明:“本文及任何相关源代码和文件均已获得CPOL的许可”。

二.分析了思想工作的相关核心对象和方法。二维码:

关于ThoughtWorks的主要类。二维码如下:

上面是用反编译DLL文件。NET反射器查看源代码。由于我只下载了DLL文件,没有下载源代码,所以直接使用。NET反射器查看源代码。接下来,我将详细介绍组件的一些类和方法:

1.二维码编码器:二维码编码器。

公共枚举ENCODE_MODE{ ALPHA_NUMERIC,NUMERIC,BYTE }公共枚举ERROR_CORRECTION{ L,M,Q,H }公共虚拟位图ENCODE(字符串内容,Encoding Encoding){ bool[][]flag array=this . calqr code(编码。GetBytes(content));solid brush brush=new solid brush(this . QR codebackgroundcolor);位图图像=新位图(((标志数组。Length * this.qrCodeScale) 1,(flagArray。length * this . qrcode scale)1);图形图形=图形。FromImage(图像);图形。填充矩形(画笔,新矩形(0,0,图像。宽度,图像。高度));刷子。color=this . qrcodeforedgroundcolor;for(int I=0;我是flagArray。长度;I){ for(int j=0;j flagArray。长度;j){ if(FlagArray[j][I]){ graphics。FillRectangle(画笔,j * this.qrCodeScale,i * this.qrCodeScale,this.qrCodeScale,this . qrcode scale);} } }返回图像;}2.二维码解码器:二维码解码器类。

公共虚拟字符串解码(QRCodeImage,qrCodeImage,Encoding Encoding){ s byte[]src=this。解码字节(二维码图像);字节[] dst=新字节[src .长度];缓冲。区块复制(src,0,dst,0,dst .长度);返回编码. GetString(dst);}公共虚拟sb yte[]decodeBytes(二维码图像二维码图像){解码结果结果;点[]调整点=这个。调整点;数组列表=数组列表.已同步(新的数组列表(10));而(这个。数字代码调整点.length){ try { result=this。解码(二维码图像,调整点[这。numtyredcode]);如果(结果。修正成功){返回结果解码字节数}列表添加(结果);canvas.println('解码成功但无法纠正');canvas.println('所有错误。正在重试.");} catch (DecodingFailedException异常){ if(例外.消息。的索引(' Finder Pattern '=0){ 0引发异常;} }最后{ this.numTryDecode} }如果(列表计数==0){ 0抛出新的DecodingFailedException('放弃解码');} int num=-1;int numerators=0x 7 ffffffffor(int I=0;我列举。计数;I){结果=(DeCodereResult)列表[一];如果(结果记数员(记数员){记数员=结果。数字员;num=I;} } canvas.println('所有试验都需要纠正错误');帆布。println(' Reporting # ' num ' the ');canvas.println('已更正的最小错误(“记数器”));canvas.println('解码完成');返回((DecodeResult)列表[num]).DecodedBytes}3。QRCodeBitmapImage:位图图像。

公共类二维码位图图像:二维码图像{//字段私有位图图像;//方法公共QRCodeBitmapImage(位图图像);公共虚拟int getPixel(int x,int y);//属性公共虚拟int Height { get}公共虚拟int Width { get} }公共接口二维码图像{//Methods int getPixel(int x,int y);//属性整数高度{ get}整数宽度{ get}以上是对思想工作。二维码组件的一些方法的介绍,如果需要了解更多的方法,可以查看对应的源码。

三。思想工作。二维码二维码操作实例:

1.生成二维码(对二维码没有进行设置)。

///摘要///生成二维码////summary///param name=' content '带生成二维码的字符串/param ///param name='path '路径/param /返回/返回公共静态字符串CreatehoughtWorksQrCode(字符串内容,字符串路径){ if(字符串IsNullOrEmpty(content)){ 0抛出新的ArgumentNullException(内容);}如果(字符串IsNullOrEmpty(路径)){抛出新的ArgumentNullException(路径);} var qrCodeEncoder=新的二维码编码器{二维码编码=二维码编码器.编码模式字节,QRCodeScale=4,QRCodeVersion=8,QR code error correct=QR code encoder .错误_更正m };图像图像=qrCodeEncoder .编码(内容);变量文件名=日期时间.现在。ToString(' yymmdhhmmssfff ')' .jpg ';var文件路径=字符串。格式("{0}{1}"、路径、文件名);FileStream fs=null尝试{ fs=新的FileStream(文件路径,文件模式打开或创建,文件访问.写);图像。保存(文件系统,系统绘图。成像。imageformat。JPEG);} catch(IOexception ex){ throw new IOexception(ex .消息);}最后{ if (fs!=null) fs .close();图像dispose();}返回CodeDecoder(文件路径);}2.选择生成二维码的相关类型。

///摘要///选择生成二维码的相关类型///param name='strData '要生成的文字或者数字,支持中文。如: '4408810820 深圳-广州' 或者:44444444/param///param名称=' QR编码'三种尺寸:BYTE,ALPHA_NUMERIC,NUMERIC/param///param name=' level '大小:L M Q H/param ///param名称='版本'版本:如8/param ///param name='scale '比例:如4/param///returns/returns///summary public void create code _ Choose(string STrdata,string qrEncoding,string level,int version,int scale) { if (string .IsNullOrEmpty(STrdata)){ 0抛出新的argumentNullException(Strdata);}如果(字符串IsNullOrEmpty(QR encoding)){ 0抛出新的ArgumentNullException(QR编码);}如果(字符串IsNullOrEmpty(级别)){抛出新的ArgumentNullException(级别);} var二维码编码器=新的二维码编码器();var编码=qrEncoding开关(编码){大小写字节' : qrCodeEncoder .QRCodeEncodeMode=QRCodeEncoder .编码模式BYTE .打破;大小写“EndIt”:二维码编码器.QRCodeEncodeMode=QRCodeEncoder .编码模式阿尔法数值打破;大小写“数字”:二维码编码器.QRCodeEncodeMode=QRCodeEncoder .编码模式NUMERIC .打破;default: qrCodeEncoder .QRCodeEncodeMode=QRCodeEncoder .编码模式BYTE .打破;} qrCodeEncoder .QRCodeScale=scaleqrCodeEncoder .QRCodeVersion=版本;开关(电平){ case 'L': qrCodeEncoder .二维码错误纠正=二维码编码器.错误_更正l .打破;案例M': qrCodeEncoder .二维码错误纠正=二维码编码器.错误_更正m。打破;案例Q': qrCodeEncoder .二维码错误纠正=二维码编码器.错误_更正q;打破;default: qrCodeEncoder .二维码错误纠正=二维码编码器.错误_更正h .打破;} Image Image=null filestream fs=null尝试{ //文字生成图片图像=qrCodeEncoder .编码(Strdata);变量文件名=日期时间.现在。ToString(' yymmdhhmmssfff ')' .jpg ';var filepath=HttpContext .当前的。服务器。映射路径(@ ' ~ \上传')' \\ '文件名;fs=新的文件流(文件路径,文件模式打开或创建,文件访问.写);图像。保存(文件系统,系统绘图。成像。imageformat。JPEG);} catch(IOexception IOex){ throw new IOexception(IOex .消息);}捕获(例外情况){ 0抛出新的例外(例如.消息);}最后{ if (fs!=null) fs .close();如果(图片!=null)图像dispose();} }3.二维码解码。

///摘要///二维码解码////summary///param name=' filePath '图片路径/param/返回/返回公共静态字符串CodeDecoder(字符串文件路径){如果(字符串IsNullOrEmpty(文件路径)){抛出新的ArgumentNullException(文件路径);}请尝试{ if(!文件存在(文件路径))返回nullvar myBitmap=新位图(图像. FromFile(文件路径));var解码器=新的QR codedecoder();var decodedString=解码器。解码(新的qrcodbitmapimage(myBitmap));返回decoded string } catch(Exception ex){ 0抛出新的例外(例如.消息);} }四。总结:

跟以前介绍组件一样,首先是组件的概述,组件的核心类,组件的使用方法,这些在这个组件时,找改组件的相关概述时,花了不少时间,也不知道为何,这个组件没有找到相关的资料,甚至连作者都是以某某某代替,但是互联网就是如此,我们不需要知道是谁制造的,只要用起来方便就可以。在生成二维码的组件和射流研究…插件中,我个人还是喜欢这个组件的,感觉很不错,任何组件和方法都是有个人偏好和使用环境,读者可以自行根据情况选择。

由于开发者提供了一个演示,可以直接进入上面的链接中查看下载,在这里就不做一个示例介绍。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

版权声明:免费开源的DotNet二维码操作组件ThoughtWorks详解 二维码(介绍 NET组件)是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。