宝哥软件园

一个在ASP.NET创建和读取二维码的例子

编辑:宝哥软件园 来源:互联网 时间:2021-10-15

本文介绍了ASP.NET创建和读取二维码的方法。分享给大家参考。具体分析如下:

概述:

与其他二维码相比,二维码具有读取速度快、数据密度高、占用空间小的优点。二维码的三个角上有三个寻图的数字。利用CCD读取设备检测编码的位置、大小、倾角并解码,实现360读取高速读取。它可以读取30个二维码,每秒100个字符。二维码容量密度大,可以包含1817个汉字、7089个数字和4200个英文字母。二维码用数据压缩来表示汉字,只需13bit就能表示一个汉字,比其他二维条码效率高20%。QR有四级纠错功能,即使损坏或损坏也能正确读取。二维码具有很强的抗弯性能。校正图形以规则的间隔排列在二维码中,并且从代码的形状获得假定校正图形的中心点和实际校正图形的中心点之间的误差,以校正每个模块的中心距离。即使二维码贴在弯曲的物品上,也能快速读取。二维码可分为16个二维码,一次可读出,适用于打印面积有限、空间细长的打印。此外,微二维码可以在1厘米的空间内放入35个数字或9个汉字或21个英文字母,适合在小电路板上采集身份证号码。

二维码点击此处从本网站下载(支持中文)。

项目引用的二维码的. DLL文件(ThoughtWorks。QRCode.dll)。

二、ASPX页面(请自行去官网下载两个jqueries的js文件):复制的代码如下: html xmns=' http://www.w3.org/1999/XHTML' head runat=' server ' title script type=' text/JavaScript ' src=' http : '././Scripts/Jquery/Jquery-1 . 6 . 2 . js/script脚本类型=' text/JavaScript ' src=' http :/./Scripts/Jquery/Jquery . form . js '/script script type=' text/JavaScript ' src=' http : js/test . js '/script style type=' text/CSS ' . style 1 { width : 100%;} # txt _ qr { width: 632px}/style/head body div table class=' style 1 ' tr tdinput text:/TD tdinput type=' text ' id=' txt _ QR ' name=' txt _ QR '/TD/tr tdQR code picture/Tdimg id=' qrimg ' alt=' QR code picture '/TD/tr tr tr TD生成选项/TD TD编码:选择id=' encoding '选项值=' byte' byte/选项值=' EndItem ' EndItem/选项值=' Numeric ' Numeric/option/optionvalue=' generate QR code '/TD/tr TD Form id=' QR Form ' action=' ashx/test . ashx ' method=' post ' enctype=' multipart/Form-data ' input type=' file ' id=' file _ QR ' name=' file _ QR '/input type=' submit ' value=' read QR code '/Form/tdtdtdcolspan=' 1 ' img id=' img _ QR ' alt=' picture to read '/。br /输入id=' txt _ readqr ' type=' text '/TD/tr/table/div/body/html

第三,复制test.js文件的代码如下: $(文档)。ready(function(){ var options={在提交3360 show request之前,成功: show response,Datatype:' JSON ',clearform: true,error: function (request,message,ex){ alert(' error:' message ');} };$('#qrForm ')。ajaxForm(选项);});函数showRequest(formData,jqForm,options){ return true;}函数showResponse(responseText,statusText,xhr,$form){ if (responseText[0])。count==0){ alert(responseText[0])。列表[0]。错误);返回false} $('#img_qr ')。attr('src ',responseText[0]。列表[0]。imgurl);$('#txt_readqr ')。val(responseText[0])。列表[0]。QR text);返回false

}函数getQrImg(){ var txt_qr=escape($).修剪($('#txt_qr ').val()));var qrEncoding=$('#Encoding ').val();风险等级=$(' #等级').val();var txt_ver=$('#txt_ver ').val();var txt_size=$('#txt_size ').val();$.ajax({ type: 'GET ',data : ' cmd=setxt _ QR=' txt _ QR ' QR编码=' QR编码' Level=' Level ' txt _ ver=' txt _ ver ' txt _ size=' txt _ size,url: 'Ashx/test.ashx ',dataType: 'text ',beforeSend:函数(x){ x . setrequest header(' Content-Type ',' application/x-www-form-formcharset=utf-8 ');},成功:函数(JSON){ var DataObj=eval(JSON);$('#qrimg ').attr('src ',dataObj[0]).列表[0]。imgurl);返回false},错误:函数(请求、消息、ex) { alert('错误:' '消息);} });}四、test.ashx、没有判断目录是否存在等问题,请自行建立或者更改代码。复制代码代码如下:使用系统;使用系统网络.使用系统。绘图;使用系统。绘图。成像;使用系统。文字;使用系统。文本。正则表达式;使用思想工厂.二维码。编解码器;使用思想工厂.二维码。编解码器。数据;使用思想工厂.二维码。编解码器。跑龙套公共类测试: IHttpHandler { public void process request(HttpContext context){ context .响应。内容类型='文本/纯文本;字符串cmd=上下文。请求['cmd']==null?获取' :上下文。请求['cmd'].ToString();字符串文件名=字符串。空的;字符串文件路径=字符串。空的;switch(cmd){ case ' get ' : if(context .请求。文件。计数0){ for(int j=0;j背景。请求。文件。计数;j ) {文件名=Guid .NewGuid().ToString()' _ tmp。jpg ';文件路径=上下文。服务器。MapPath(@ ' ~ utility QR code upload ')' '文件名;字符串qrdecode=字符串。空的;HttpPostedFile上传文件=上下文。请求文件[j];上传文件另存为(文件路径);

二维码解码器=新的二维码解码器();位图bm=新位图(文件路径);qrdecode=decoder.decode(新的QR codebitmapimage(BM));bm .dispose();语境。响应。写入('[{ ' count ' :1, ' list ' :[{ ' imgurl ' : ' upload/' filename ' ', ' QR text ' : ' ' QR decode ' ' }]});} } else { context .响应。写入('[{ '计数' :0, '列表' :[{ '错误' : '没有上传文件'}]}]');} breakcase 'set':字符串txt_qr=ConverToGB(上下文。请求['txt_qr'].ToString().Trim(),16);字符串qrEncoding=上下文。请求['qrEncoding'].ToString();字符串级别=上下文。请求['级别']。ToString();字符串txt_ver=上下文。请求['txt_ver'].ToString();字符串txt_size=上下文。请求['txt_size'].ToString();

二维码编码器二维码编码器=新二维码编码器();字符串编码=qrEncodingif(编码=='Byte') { qrCodeEncoder .QRCodeEncodeMode=QRCodeEncoder .编码模式. BYTE} else if(编码==' EndItem '){二维码编码器.QRCodeEncodeMode=QRCodeEncoder .编码模式. ALPHA _ NUMERIC} else if(编码=='Numeric') { qrCodeEncoder .QRCodeEncodeMode=QRCodeEncoder .编码模式{ NUMERIC }尝试{整数比例=转换.到int 16(txt _ size);qrCodeEncoder .qrcode scale=scale } catch(Exception ex){ return;}请尝试{ int版本=转换.到int 16(txt _ ver);qrCodeEncoder .QRCodeVersion=版本;} catch(Exception ex){ return;}字符串错误正确=级别;if(错误正确==' L ')二维码编码器.二维码错误纠正=二维码编码器.错误_更正l .否则if(错误正确==' M ')二维码编码器.二维码错误纠正=二维码编码器.错误_更正m。否则if(错误正确==' Q ')二维码编码器.二维码错误纠正=二维码编码器.错误_更正q;否则if(错误正确==' H ')二维码编码器.二维码错误纠正=二维码编码器.错误_更正h .

图像图像;字符串数据=txt _ qrimage=qrCodeEncoder .编码(数据);文件名=Guid .NewGuid().ToString()' .jpg ';文件路径=上下文。服务器。MapPath(@ ' ~ utility QR code upload ')' '文件名;系统。文件流=新系统。文件流(文件路径,系统。文件模式。打开或创建,系统IO。文件访问。写);图像。保存(文件系统,系统绘图。成像。imageformat。JPEG);fs .close();图像dispose();语境。响应。写入('[{ ' count ' :1, ' list ' :[{ ' imgurl ' : ' upload/' filename ' ' }]});

//上下文。响应。写入(@"上传"文件名);打破;} } ///摘要////10进制或16进制转换为中文////summary ///param name='name '要转换的字符串/param ///param name='fromBase '进制(10或16)/param///returns/returns public string ConverToGB(string text,int from base){ string value=text;MatchCollection mc系统。新系统文本。StringBuilder();switch(FromBaSe){ case 10: match collection mc1=Regex .匹配(文本,@'([d]{5})',正则表达式选项。编译|正则表达式忽略大小写);foreach(mc1中的Match _ v){字符串w=_ v . value。子串(2);w=转换ToString(int .Parse(w),16);字节[] c=新字节[2];字符串ss=w.Substring(0,2);int c1=转换.到t32(w . Substring(0,2),16);int c2=转换.到t32(w . Substring(2),16);c[0]=(字节)C2;c[1]=(字节)C1;某人(某人的简写)追加(编码unicode。getString(c));价值=某人.ToString();

打破;案例16: mc=Regex .匹配(文本、@'\u([w]{2})([w]{2})',正则表达式选项。编译|正则表达式忽略大小写);if (mc!=空mc .计数0){ 0

foreach(匹配喊麦中的m2){字符串v=m2 .价值;字符串w=v . Substring(2);字节[] c=新字节[2];int c1=转换.到t32(w . Substring(0,2),16);int c2=转换.到t32(w . Substring(2),16);c[0]=(字节)C2;c[1]=(字节)C1;某人(某人的简写)追加(编码unicode。getString(c));价值=某人.ToString();} break}返回值;} public bool IsReuse { get { return false;} }}

效果如下图所示:

PS:感兴趣的朋友还可参考本站二维码工具:http://工具。JB 51。净额/转码/jb51qrcode

希望本文所述对大家的ASP。网程序设计有所帮助。

更多资讯
游戏推荐
更多+