二维码的原理以及怎么生成二维码

二维码的原理以及怎么生成二维码目录一 什么是二维码 二 常用的码制三 为什么叫二维码四 二维码为什么是黑白相间的 五 QRCODE 介绍六 QR 码纠错功能七 QR 码的信息量和版本八 具体实现一 什么是二维码 二维码 2 dim

大家好,欢迎来到IT知识分享网。

一、什么是二维码:

二、常用的码制

Data Matrix, Maxi Code, Aztec, QR Code, Vericode, PDF417, Ultracode, Code 49, Code 16K等。

三、为什么叫二维码

二维码的名称是相对与一维码来说的:

比如以前的条形码,只有横向的竖条状信息,所以也叫“一维码”。

二维码呢,则是横向纵向都有信息,所有叫“二维码”。

二维码优点有:

存储的数据量更大;可以包含数字、字符,及中文文本等混合内容;有一定的容错性(在部分损坏以后可以正常读取);空间利用率高等。

二维码中,最流行莫过于QR CODE。

四、二维码为什么是黑白相间的?

因为黑色表示二进制的“1”,白色表示二进制的“0”。

我们之所以对二维码进行扫描能读出那么多信息,就是因为这些信息被编入了二维码之中。

制作二维码输入的信息可以分成三类:

​ 文本信息,比如名片信息;

​ 字符信息,比如网址、电话号码;

​ 图片信息,甚至还可以包括简短的视频。

数据信息是怎么被编入的呢?

信息输入后,首先要选择一种信息编码的码制。现在常见的二维码都是以QR码作为编码的码制。QR码是矩阵式二维码,它是在一个矩形空间内,通过黑、白像素在矩阵中的不同分布,来进行编码的。我们知道电脑使用二进制(0和1)数来贮存和处理数据,而在二维码中,用黑白矩形表示二进制数据我们肉眼能看到的黑色表示的是二进制“1”,白色表示二进制的“0”,黑白的排列组合确定了矩阵式二维条码的内容,以便于计算机对二维码符号进行编码和分析。

五、QR CODE 介绍

  1. 数据分析:确定编码的字符类型,按相应的字符集转换成符号字符; 选择纠错等级,在规格一定的条件下,纠错等级越高其真实数据的容量越小。
  2. 数据编码:将数据字符转换为位流,每8位一个码字,整体构成一个数据的码字序列。其实知道这个数据码字序列就知道了二维码的数据内容。
    在这里插入图片描述

QR码可以从任意方向读取:

提示:

QR码是日本产的二维码,因此非常适合处理日文字母和汉字。QR码字集规格定义是按照日本标准“JIS第一级和第二级的汉字”制定的,因此在日语处理方面,每一个全角字母和汉字都用13比特的数据处理,效率较高,与其他二维码相比,可以多存储20%以上的信息。

六、QR码纠错功能

比如我要存一百个数字,那可以额外加一个这一百个数字的和,如果有一个数字缺失,那根据这个和求出,这个就是百分之一的可被修正。如果想两个缺失能被复原就需要再加一些参数。所以信息量就增加了,对应图形就越来越密了。

七、QR码的信息量和版本

八、具体实现

// 通过引用PHP QR Code类库,最简单的调用方式 // 必须开启支持GD2扩展库支持 include "qrlib.php"; $PNG_WEB_DIR = 'temp/'; // 设置二维码图片缓存路径 $PNG_TEMP_DIR = dirname(__FILE__) . DIRECTORY_SEPARATOR . 'temp' . DIRECTORY_SEPARATOR; // 如果二维码图片缓存路径不存在,则需要重新创建 if (!file_exists($PNG_TEMP_DIR)) { 
    mkdir($PNG_TEMP_DIR, 0777); } $filename = $PNG_TEMP_DIR . 'test.png'; // 设置二维码图片纠错级别 $errorCorrectionLevel = 'L'; if (isset($_REQUEST['level']) && in_array($_REQUEST['level'], array('L', 'M', 'Q', 'H'))) { 
    $errorCorrectionLevel = $_REQUEST['level']; } $filename = $PNG_TEMP_DIR . 'test' . md5($_REQUEST['data'] . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png'; QRcode::png($_REQUEST['data'], $filename, $errorCorrectionLevel, $matrixPointSize, 10); echo '<img src="' . $PNG_WEB_DIR . basename($filename) . '" /><hr/>'; // 设置二维码图片大小 $matrixPointSize = 4; if (isset($_REQUEST['size'])) { 
    $matrixPointSize = min(max((int) $_REQUEST['size'], 1), 10); // 做一个限制大小,最小为1,最大为10 } // 基准测试;生成耗时等 QRtools::timeBenchmark(); // 参数$text表示生成二位的的信息文本; // 参数$outfile表示是否输出二维码图片文件,默认否; // 参数$level表示容错率;分别是L(QR_ECLEVEL_L,7%),M(QR_ECLEVEL_M,15%),Q(QR_ECLEVEL_Q,25%),H(QR_ECLEVEL_H,30%); // 参数$size表示生成图片大小,默认是3// 参数$margin表示二维码周围边框空白区域间距值; // 参数$saveandprint表示是否保存二维码并显示 QRcode::png($text, $outfile = false, $level = QR_ECLEVEL_L, $size = 3, $margin = 4, $saveandprint=false)

QR Code 其它示例

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/139965.html

(0)
上一篇 2025-05-31 19:00
下一篇 2025-05-31 19:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信