HTML5笔记:利用JS生成中间带logo的二维码

本文关键字:生成  二维码  中文  文件  使用  支持  图片  能够  直接  需要 


描述: jquery.qrcode.js 是一个能够在客户端生成矩阵二维码QRCode 的jquery插件 ,使用它可以很方便的在页面上生成二维条码。此插件是能够独立使用的,体积也比较 小,使用gzip压缩后才不到4kb。因为它是直接在客户端生成的条码, 所以不会有图片下载的过程,能够实现快速生成。它是基于一个多语言的类库封装的,也不依赖于其他额外的服务。

   好处:使用jquery-qrcode的好处,不需要在服务器端生成多余的二维码图片,二维码直接通过JavaScript直接在客户端生成,有效减少带宽,以及维护成本。

首先大家可以看一下jquery.qrcode.js官网,官网上也有例子。但是官网的 jquery.qrcode.js是不支持中文的,废话不多说了,现在我们开始吧。

官网上的 qrcode.js 文件里没有实现中文的支持和LOGO的添加,现在我们将这个文件修改为jquery.qrcode.js文件了。此外还需要一个对中文进行转码的文件,该文件为 utf.js。然后在 jquery.qrcode.js 文件中调用了 utf.js 文件的 utf16to8(str) 方法对其中文进行了转码。

下面是我写的一个示例,该示例需要的js文件有 jquery.qrcode.jsutf.js 以及 jquery-1.8.0.js 。可点击下载文件.还有一个 LOGO图片 就不上传了。

  调用的jsp代码如下:
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>该二维码支持中文和LOGO</title>
 8 
 9 <script type="text/javascript" src="jquery-1.8.0.js"></script>
10 <script type="text/javascript" src="utf.js"></script>
11 <script type="text/javascript" src="jquery.qrcode.js"></script>
12 <script type="text/javascript">
13     $(document).ready(function() {
14         $("#qrcodeCanvas").qrcode({
15             render : "canvas",    //设置渲染方式,有table和canvas,使用canvas方式渲染性能相对来说比较好
16             text : "这是修改了官文的js文件,此时生成的二维码支持中文和LOGO",    //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接
17             width : "200",               //二维码的宽度
18             height : "200",              //二维码的高度
19             background : "#ffffff",       //二维码的后景色
20             foreground : "#000000",        //二维码的前景色
21             src: 'photo.jpg'             //二维码中间的图片
22         });
23     });
24 </script>
25 
26 </head>
27 <body>
28     <center>
29       <h2>该二维码支持中文和LOGO</h2>
30       <div id="qrcodeCanvas"></div>
31     </center>
32 </body>
33 </html>


扩展:

Logistic Regression的思考与整理

在NYU上了Machine Learning,学到了一些以前没有注意或者不知道的知识。在原有部分博文的基础上进行更详细地讲解。关于回归算法的Bias和Variance加深了对误差理论的理解。对于一个输入为x⃗ 的回归算法,我们设算法输出的预测函数为g(x),算法的真正分类函数为f(x)。我们期望的就是让g(x)尽可能地与f(x)靠近。我们将f(x)和g(x)当成一个连续函数,那么对于特定的xi,r表示输入数据在该点的值,且f(x)=E[r|xi](因为输入有噪声的缘故)。E[(r−g(......

HTML5图表组件库ichartjs作者王鹤专访

ichartjs是一款基于HTML5的图形图表库,使用纯JavaScript语言, 利用HTML5的canvas标签绘制各式图形,致力于为应用提供简单、直观、可交互的体验级图表组件。ichartjs基于Apache License 2.0协议开源,目前支持饼图、环形图、折线图、面积图、柱形图、条形图。  欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创业理念和有趣之处,或者有朋友正在创造这样的价值,请联系我们,发信到blog@c......

开源 Java 博客 B3log Solo 开发团队专访

B3log Solo 是一款基于 Java 的开源的博客程序,支持部署在 GAE、BAE、OpenShift等云环境上,也可以运行在标准 Servlet 容器上。当前最新版本为0.5.5。官网:http://www.b3log.org/Github地址:https://github.com/b3log/b3log-solo为了使大家对B3log Solo有进一步的了解,本期我们采访了B3log Solo的开发团队。欢迎大家推荐更多开源项目给我们,支持中国的开源项目发展,如果您和您的团队希望展示创......

My Blog,我的2016

My Blog,我的2016寒风瑟瑟......走出公司大楼,一片落叶,在昏暗的路街灯下,随风划过我的脸颊,一个寒颤,时间瞬间凝固。也许是落叶的忧伤,让我触景生情;也或许是暗淡的街灯,留恋我疾行的脚步;我的思维,我的记忆,刹那间随风飞舞。2016,一个即将走过的行者,用时间教会了我成长。四年前,我怀揣着自己的梦想,从温暖的校园走进现实的苍穹。我是一个图像处理专业的毕业生,我喜欢研究图像处理算法,因为,研究图像,就像研究生活,充满了精彩。我也喜欢C#,因为,C#是我研究的工具。我希望找到一份C#图......

Mac下使用自带终端SSH功能的一个小技巧

在Mac OS的终终端(terminal)中,可以使用命令ssh user@host的命令来远程连接一台服务器,但是,如果要管理的服务器太多,IP地址不能全部记住的时候怎么办?这时候我们可以为每一台服务器设置一个别名(alias),使用vi命令编辑一下~/.ssh/config这个文件(如果目录下没有这个文件,可以新建一个),接着按下面格式添加内容:# 服务器1Host 别名 HostName IP地址 Port 22 User 用户名# 服务器2Host 别名 HostN......

使用lua CJSON库如何将空table编码成数组

先看下面一段代码 local cjson = require "cjson" print(cjson.encode({dogs = {}})) -- 输出 {"dogs":{}} lua的CJSON库默认会将空table编码成{},如果dogs是一个数组呢?当dogs为空的时候,如何让它返回一个空数组?很简单,加多一句代码就可以了 local cjson = require "cjson" cjson.encode_empty_table_as_object(false) print(cj......

[AHK]用xmlpath方式解析xml的值

xmldata = ; replace with fileread as you already have done(join`r`n<?xml version="1.0"?><root><itemLookup> <version>1.0</version> <typeID>37</typeID> <typeName>Isogen</typeName></item......

以XML作数据库的考生成绩管理系统的实现

一个以XML作数据库的简易考生成绩管理系统的实现,包含了:·基于java面向对象思想的程序架构设计·xml解析技术·异常抓取·IO文件流相关知识。麻雀虽小,五脏俱全!~程序结构图://xml文档,在这里相当于数据库,用以存放、读取数据<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>    <student ......

JavaWeb学习笔记(7)——ServletConfig和ServletContext对象

/*ServletConfig对象 ·在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。 ·Servlet配置了初始化参数后,web容器在创建servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中, 并在调用servlet的init方法时,将ServletConfig对象传递给servlet。进而,程序员通过ServletConfig对象就可以得到当前servl......

利用Mongodb聚合(aggregate)来进行复杂查询的技巧

1、以多个key作为唯一键,分组查询比如项目和主机地址(ip)有交叉关系,需要按ip和proj都不同的方式分组取出数据。 利用$group的_id对象分组,可以再用$project重命名。db.Model.aggregate([ { $group:{ _id: { ip: '$ip', proj: '$proj' } } }, { $project:{ ip: '$_id.ip', proj: '$_i......

无法直接启动带有"类库输出类型"的项目

无法直接启动带有”类库输出类型”的项目      在学习项目的过程总会有很多新的技术点需要攻克,时间紧迫没有太多时间拿来从理论一点点学起,对于急需完成实现的我知道了基本原理后,就从网络中下载了相关Demo来参考修改。结果一调试就出现了错误,乍一看就懵了。知道了原理原来会这么简单只是没有设置启动项。下面配图来说一下修改过程:找到项目单机右键打开属性菜单在属性菜单找到输出类型,我这里是Windows应用程序,保存一下(Ctrl+s),问题解......

[AHK]用AutoHotkey当批处理,批量修改文件名

用AutoHotkey当批处理,批量修改文件名dir := "d:\abc" ;指定工作目录objFolder := ComObjCreate("Shell.Application").NameSpace(dir)for item in objFolder.items if Not item.isFolder{OldStr:=item.NameNeedle = .png ;过滤文件类型 只处理.png文件IfInString,OldStr......

JavaWeb学习笔记(6)——Servlet原理

Servlet的运行过程:Servlet程序是由WEB服务器调用,web服务器收到客户端的Servlet访问请求后:1、Web服务器首先检查是否已经装载并创建了该Servlet的实例对象。如果是,则直接执行第④步,否则,执行第②步。2、装载并创建该Servlet的一个实例对象。 3、调用Servlet实例对象的init()方法。4、创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用Servle......

linux 常用基本命令之三十一 ldconfig

一、ldconfig      ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig。 ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件,缓存文件默认为 /etc/ld.so.......

ldconfig命令的作用

ldconfig命令的作用ldconfig是一个动态链接库管理命令为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfigldconfig  命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为  /etc/ld.so......

让网页中footer总在底部的有效办法

DOM结构:html body  #wrap   #header   #main  #footer-spacer  #footer其中,主要内容放在#wrap中。#footer-spacer是为了占位的透明元素。设置css:html,body{ min-height: 100vh; overflow: auto; padding: 0; margin: 0; birder: 0;} body{ position: relative;}#footer{ height: 50px......

单用户模式+救援模式找回root密码

1.13 单用户模式开机界面按e进入单用户模式 ro=只读 1、开机按e进入 2、在linux16行修改ro为rw init=/sysroot/bin/sh 3、修改完以后control+x 重启 4、切换到 chroot /sysroot/ 5、passwd root 如果显示乱码则输入LANG=en再修改密码 6、touch /.autorelabel加载配置1.14 救援模式在vm中设置开机进入BIOS 选择光驱启动 选择Troubleshooting 选择第二项Resc......

Spring Boot Web应用的异常处理

Web应用在处理请求时可能会出现多种错误,如请求参数不正确、URL不存在、请求方法错误、内部未知错误等。SpringMVC有多种异常处理方式,使用某种方式的判断标准是,你的异常是在请求处理的哪个阶段发生的。在执行@RequestMapping方法时发生的异常这也是最常见的异常了,处理业务逻辑时可能会发生各种问题,如数据库报错、请求参数格式错误/缺失/值非法等。此类异常的捕获方法有两种,对于提供RESTful服务的应用,使用@ControllerAdvice和@ExceptionHandler注解......

Spring Boot中Web应用的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射:/error,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。选择一个之前实现过的Web应用(Chapter3-1-2)为基础,启动该应用,访问一个不存在的URL,或是修改处理内容,直接抛出异常,如:1234@RequestMapping("/hello")public String hello() throws Except......

Mongodb权限设置

特别说明,本文内容仅根据Mongodb Manual 3.4。在3.6版本下测试有效。添加root管理账户use admindb.createUser({ user: "root", pwd: "root", roles: [role: "root"], customData: "root user with all permissions."}) Built-In Roles(内置角色): + 数据库用户:read、readWrite; + 数据库管理:dbA......