一、二维码的简介
1,二维码或者二维条码是用某种特定的几何图形按一定的规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的图形。
2,二维码上有很多的点和空白,其中的点代表二进制的1,而空白代码二进制的0。
3,二维码依据码制的编码原理,通常分为三种:线性堆叠式二维码、矩阵式二维码、邮政码。
a,线性堆叠式二维码:建立在一维条码基础上,按需要堆积成两行或多行。与一维码很类似。
b,矩阵式二维码:(最常用)在一个矩阵空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或 其它形状)的出现表示二进制“1”,点的不出现表示二进制的“0”。此文章主要是讲解如何生成QR CODE二维码。
c,邮政码:通过不同长度的条进行编码,主要用于邮件编码。
4,二维码优点:
(1)高密度编码,信息容量大;
            (2)编码范围广;
            (3)容错能力强(假如二维码缺失一角,一般不影响整个二维码读取);
      (4)编码可靠性高;
      (5)可引入加密措施;
      (6)成本低,易制作,持久耐用。
5,二维码缺点:
(1)二维码技术成为手机病毒、钓鱼网站传播的新渠道;
(2)信息泄露。
6,目前流行的三大国际标准:
(1)PDF417:不支持中文;
    (2)DM:专利未公开,需支付专利费用;
    (3)QR code:专利公开,支持中文;其中QR Code(Quick Response Code)与其他二维码相比,具有识读速度快、数据密度大、占用 空间少的优势。

    7,这里讲解生成二维码的两种方法:

(1)第三方jar包,zxing和qrcode.jar
(2)javascript,如jquery.qrcode.js
二、

    • jar包zxing的地址: http://github.com/zxing/
    • 得到该jar包后打开eclipse,创建一个java项目,导入jar包zxing。
    • 创建一个生成二维码的类CreateQRCode
    • package cn.zclong.zxing;import java.io.File;
      import java.nio.file.Path;
      import java.util.HashMap;import com.google.zxing.BarcodeFormat;
      import com.google.zxing.EncodeHintType;
      import com.google.zxing.MultiFormatWriter;
      import com.google.zxing.WriterException;
      import com.google.zxing.client.j2se.MatrixToImageWriter;
      import com.google.zxing.common.BitMatrix;
      import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;//生成二维码
      public class CreateQRCode {public static void main(String[] args) {//图片的宽度和高度int width = 300;int height = 300;//图片的格式String format = "png";//内容,此处放你想要放的内容(例如网页链接),若是网址链接,要加上 "http://" 才能被微信识别,//这里我放了一个自己写的获取IP地址和访问量的小demoString content = "http://www.zclong.cn/IPCount/show.jsp";//定义二维码的参数HashMap hints = new HashMap();//编码hints.put(EncodeHintType.CHARACTER_SET, "utf-8");//容错等级,与二维码存储的大小有关,一般选择Mhints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);//边距hints.put(EncodeHintType.MARGIN, 2);//生成二维码try {BitMatrix bitMatrix = new MultiFormatWriter().encode(content, BarcodeFormat.QR_CODE, width, height, hints);//存放二维码路径Path file = new File("F:/code/img.png").toPath();MatrixToImageWriter.writeToPath(bitMatrix, format, file);} catch (Exception e) {e.printStackTrace();}}}
      
    • 上述代码是用来创建二维码的,运行可得二维码

    • 接下来我们创建一个类ReadQRCode来解析二维码
    • package cn.zclong.zxing;import java.awt.image.BufferedImage;
      import java.io.File;
      import java.io.IOException;
      import java.util.HashMap;import javax.imageio.ImageIO;import com.google.zxing.BinaryBitmap;
      import com.google.zxing.EncodeHintType;
      import com.google.zxing.MultiFormatReader;
      import com.google.zxing.NotFoundException;
      import com.google.zxing.Result;
      import com.google.zxing.client.j2se.BufferedImageLuminanceSource;
      import com.google.zxing.common.HybridBinarizer;
      //解析二维码
      public class ReadQRCode {public static void main(String[] args) {try {MultiFormatReader multiFormatReader =  new MultiFormatReader();//二维码的存放位置File file = new File("F:/code/img.png");//创建一个图片缓冲区BufferedImage image = ImageIO.read(file);//对图片进行解析BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(new BufferedImageLuminanceSource(image)));//定义二维码的参数HashMap hints = new HashMap();//编码hints.put(EncodeHintType.CHARACTER_SET, "utf-8");//得到解析后的resultResult result = multiFormatReader.decode(binaryBitmap, hints);System.out.println("解析结果:" + result.toString());System.out.println("二维码格式类型·:" + result.getBarcodeFormat());System.out.println("解析结果:" + result.getText());} catch (NotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
    • 编译运行得到结果如下:
              解析结果:http://www.zclong.cn/IPCount/show.jsp
      二维码格式类型:QR_CODE
      解析结果:http://www.zclong.cn/IPCount/show.jsp

以上便是利用第三方jar包zxing来制作和解析二维码

三、接下来介绍利用javascript,如jquery.qrcode.js来生成二维码,这种方法比上述方法更为方便,快捷

1.首先先要下载jquery.min.js和jquery.qrcode.min.js

2.创建一个javaweb项目,引入上述的两个js

3.创建一个qrcode.jsp

4.

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>生成二维码</title><script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.min.js"></script>
<script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery.qrcode.min.js"></script>
</head>
<body>
生成二维码如下:<br>
<div id="qrcode"></div><script type="text/javascript">
jQuery('#qrcode').qrcode("http://www.zclong.cn/IPCount/show.jsp");
</script></body>
</html>

5.然后启动tomcat,运行该项目即可生成二维码,这种方法相对第一种方法而言更为快捷方便,而大多数我们也是使用这种方法来生成二维码

四、以上便是生成二维码的两种方式,大家可以去尝试一下制作自己的二维码,若想要制作个性的二维码,可以利用Bootstrap去设计logo,个性化图片等,这里就不一一介绍了,希望这篇文章对需要者有所帮助。

附上制作二维码所需要的资料:https://git.oschina.net/zclong/qrcode.git

简单制作属于自己的二维码相关推荐

  1. python制作自己的专属二维码

    python制作自己的专属二维码 普通二维码 带图二维码 动图二维码 首先下载并导入,下载可以 pip insatll MyQR来下载 from MyQR import myqr 首先可以看到这个函数 ...

  2. 二维码如何制作?三个二维码在线制作教程

    二维码如何制作?我们的日常生活中随处可见各种各样的二维码,比如问卷调查.商家收款码.公众号主页码等等.诚然二维码让我们的生活更加便利,有的时候我们会发现有些商家的二维码十分好看.这里小编就来给大家介绍 ...

  3. 如何制作注塑机点检二维码

    对注塑机进行巡检是注塑机管理中不可或缺的环节之一,定期的巡检可以掌握注塑机的运行情况,及早发现安全隐患,从而尽早解决问题,提升生产效率. 近几年,因为二维码的普及和简单易用的特性,使用二维码对注塑机进 ...

  4. 使用Python制作酷炫的二维码

    参考: https://www.cnblogs.com/zhuwjwh/p/11401312.html 制作动图二维码只需要原始图像是动图就可以哦~~,制作动图可以参考我之前的博客:

  5. 二维码制作软件----如何让二维码内容换行显示

    二维码内容扫描出来能换行显示已经成为一个常见的需求.能否换行跟扫描用的设备,如扫描枪.手机等无关,是二维码换行符决定的,是二维码内容的一部分.那么换行符该如何设置在二维码内呢? 换行符输入时控制符的一 ...

  6. 如何制作一个漂亮的二维码 QRBTF

    作者 ciaochaos CPunisher 置顶:我们的二维码生成网站 qrbtf.com 有人说,二维码是 线下向线上转化最重要的入口,无论是对于线下商家.自媒体运营者.策展人还是纸媒编辑,二维码 ...

  7. 用Python制作各种用途的二维码

    当你提到二维码时,大多数人想到的是仓库管理或产品标签等 "工业 "应用,但这篇文章在很大程度上是关于二维码的个人和社会用途. 有趣的事实 二维(QR)码是在1994年发明的,最近几 ...

  8. 如何制作库位管理二维码

    库位管理是指利用库位使商品处于"被保管状态"并能明确显示出商品所储存的位置,同时能够准确记录商品位置和数量上的变动,使管理者能够随时掌握商品的数量.位置及去向.库位管理本质上是一种 ...

  9. 如何制作轮播图片二维码?二维码中的图片如何排版?

    二维码是现在生活和工作中经常会用到的一种工具,很多人经常会需要将图片.视频.文本.文件等等类型的内容做成二维码展示.那么在制作图片二维码的时候,大家知道轮播图片二维码怎么制作吗?怎样制作二维码被用户扫 ...

最新文章

  1. JavaScript 全选函数的实现
  2. 潘云鹤:人工智能走向2.0 | 全球青少年图灵计划首场大师公开课
  3. Selenium2Lib库之鼠标事件常用关键字实战
  4. Java--获取request中所有参数的方法
  5. 前端学习笔记2017.6.12 CSS控制DIV
  6. SAP CK40N常见问题
  7. 华硕无线路由打印机服务器,享受DIY的快乐 篇四:当普通打印机遇上智能路由器——网络打印机配置教程(以华硕AC66U B1为例)...
  8. C++ 泛型编程(二):非类型模板参数,模板特化,模板的分离编译
  9. 关于Javascript框架的神回帖,值得围观
  10. 关于区块链技术的10本书
  11. 诺基亚手机的安全保护。--如何使你的手机丢失,被盗后依然安全。
  12. Unity3d开发跳一跳AI(ML-agents)全纪录
  13. 谷歌修复安卓System 组件中的多个 RCE 漏洞
  14. 如何架设Linux打印服务器
  15. Linux4755文件权限,如何在Linux中管理文件和文件夹的权限
  16. Fluent API Development in C# C#中流畅的API开发 Lynda课程中文字幕
  17. Nachos编译与使用--Nachos配置
  18. python-随机生成数据faker
  19. web开发框架_Web开发的十大框架
  20. java 成神之路 (一)

热门文章

  1. Oracle EBS PO rcv_shipment_headers 数据缺失
  2. 负载均衡种类及优缺点
  3. C语言 蓝桥杯 1221是一个非常特殊的数,它从左边读和从右边读是一样的,编程求所有这样的四位十进制数。
  4. 常见的几种求模运算(mod)——加减乘、除的小费马定理、指数的欧拉降幂
  5. 电机一启动或负载电流瞬间增大,电源输出电压就下降,欠压,随后又恢复正常
  6. 我的项目管理学习培训笔记-2015-12…
  7. Dynamics 365Online 如何从APP Source中下载APP
  8. 数据挖掘思维和实战12 支持向量机(SVM):用一条线分开红豆与绿豆
  9. 详述PXE批量装机环境
  10. 前端巩固-7、css水平居中和垂直居中显示