之前一直采用的是java后台调用qrcode.jar的形式产生二维码,然后web前台展示的形式显示二维码,后来感觉如果能调用JS框架产生二维码的话不久更好。至少能减少与浏览器的交互次数,减轻后台的压力。
搜了一些资料后感觉没有一个拿来就能用的,至少IE浏览器的兼容还是有问题,通过自己的调试写了一个demo.希望能够帮助到大家,为大家节省时间
具体的demo可以通过http://download.csdn.net/detail/fugui6611634/7337467来下载
将一个字符串(可以是中文,在生成二维码图片之前将中文转码)生成二维码图片,如果想要带log的二维码,可以在生成后的二维码中间部位自己添加一个小log,log图片不要太大,不然就扫描不出内容了。
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <title></title>
- <script src="js/jquery-1.8.3.js" type="text/javascript"></script>
- <script src="js/jquery.qrcode.min.js" type="text/javascript"></script>
- <script type="text/javascript">
- $(function () {
- $("#bt").bind("click", function () {
- text = $("#text").val();
- $("#div_div").qrcode(utf16to8(text));
- })
- })
- function utf16to8(str) { //转码
- var out, i, len, c;
- out = "";
- len = str.length;
- for (i = 0; i < len; i++) {
- c = str.charCodeAt(i);
- if ((c >= 0x0001) && (c <= 0x007F)) {
- out += str.charAt(i);
- } else if (c > 0x07FF) {
- out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F));
- out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F));
- out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
- } else {
- out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F));
- out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F));
- }
- }
- return out;
- }
- </script>
- </head>
- <body>
- <input type="text" id="text" />
- <input type="button" value="shengc" id="bt" />
- <div id="div_div" style="width:400px;height:400px;border:1px solid #000;"></div>
- </body>
- </html>
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script src="js/jquery-1.8.3.js" type="text/javascript"></script> <script src="js/qrcode.js" type="text/javascript"></script> <script src="js/jquery.qrcode.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $("#bt").bind("click", function () { text = $("#text").val(); $("#div_div").qrcode(utf16to8(text)); }) }) function utf16to8(str) { //转码 var out, i, len, c; out = ""; len = str.length; for (i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; } </script> </head> <body> <input type="text" id="text" /> <input type="button" value="shengc" id="bt" /> <div id="div_div" style="width:400px;height:400px;border:1px solid #000;"></div> </body> </html>
- jQuery(‘#output‘).qrcode({width:200,height:200,correctLevel:0,text:content});
- 具体的参数说明参见以下
- render : "canvas|table",//设置渲染方式
- width : 256, //设置宽度
- height : 256, //设置高度
- typeNumber : -1, //计算模式
- correctLevel : QRErrorCorrectLevel.H,//纠错等级
- background : "#ffffff",//背景颜色
- foreground : "#000000" //前景颜色