php 生成条形码-如何用php生成二维码

2023-08-29 0 1,292 百度已收录

php爱好者专刊中二维码的解释

PHP爱好者

1. 完成google开放API

[php]

$urlToEncode="姓名:刘新明,电话:18792448443";

生成 QRfromGoogle($urlToEncode);

/**

*Google API二维码生成【QRcode最多可存储4296个字母数字文本,详情请查看二维码数据格式】

*@paramstring$chl 二维码包含的信息可以是数字、字符、补码信息、汉字。数据类型不能混合,数据必须采用UTF-8URL编码。 如果要传输的信息超过2K字节,请使用POST方法

*@paramint$widhtHeight 生成二维码规格设置

*@paramstring$EC_level是可选的纠错级别,二维码支持四个级别的纠错,分别用于恢复丢失、误读、模糊、数据。

*L-默认:可以识别 7% 的丢失数据

*M - 可以识别丢失15%的数据

*Q-可以识别丢失25%的数据

*H - 可以识别丢失30%的数据

*@paramint$margin @paramint$margin生成的二维码与图片边框的距离

*/

functiongenerateQRfromGoogle($chl,$widhtHeight='150',$EC_level='L',$margin='0')

$chl=urlencode($chl);

回声'

'.$widhtHeight.'x'.$widhtHeight.'&cht=qr&chld='.$EC_level.'|'.$margin.'&chl='.$chl.'"alt="QRcode"widhtHeight="'.$ wdhtHeight.'"widhtHeight="'.$widhtHeight.'"/>';

更多详情请参考百度文库:

2. PHP解释器PHPQRCode

PHPQRCode是用于生成QRCode的开源(LGPL)库,

二维条形码。基于libqrencodeClibrary,

提供用于创建 QRCode 条形码图像(PNG、JPEG 感谢 GD2)的 API。

纯粹用 PHP 实现,没有外部依赖项(如果需要php 生成条形码,GD2 除外)。

PS:由于时间限制,我只测试了google open API正常。 其他的可以自己测试一下。

=================================================== =了解接下来两个二维码的原理========================================= ===============

二维条码(2-Dimensional Barcode)是按照一定规则分布在平面上的具有特定几何图案的黑白图案,用于记录数据和信息。

常用的编码系统有:DataMatrix、MaxiCode、Aztec、QRCode、Vericode、PDF417、Ultracode、Code49、Code16K等。

①:堆叠/逐行二维条码,如Code16K、Code49、PDF417(如右图)等。

②:矩阵二维码,最流行的是QRCODE

二维码存储的数据量较大; 可以包含数字、字符、英文文本等混合内容; 具有一定的容错能力(部分损坏后仍能正常读取); 并且空间利用率高。

③:二维码简介

二维码的基本结构如上图所示,其中:

位置检测图形、位置检测图形分隔符、定位图形:用于对二维码进行定位。 对于每个二维码,位置是固定的,但大小会有所不同;

标定图形:尺寸确定,标定图形的数量和位置也确定;

格式信息:表示QR码的纠错级别php 生成条形码,分为L、M、Q、H;

版本信息:二维码的大小。 QR 码符号具有 40 种尺寸(通常为深棕色)的矩阵,从 21x21(版本 1)到 177x177(版本 40)。 每个版本的符号都比之前的版本大,每侧降低了 4 个模块。

数据和纠错码字:实际保存的二维码信息,以及纠错码字(用于纠正因二维码破坏而产生的错误)。

简要编码过程:

1、数据分析:确定会员代码的字符类型,并根据对应的字符集转换为符号字符; 选择纠错级别,在一定大小的情况下,纠错级别越高,实际数据容量越小。

2、数据编码:将数据字符转换为比特流,每个8位码字整体构成一个数据码字序列。虽然知道了数据码字序列,但你却知道了二维码的数据内容

可以根据更高效解码的模式对数据进行编码,例如:编码数据:01234567(版本1-H),

1)集团:01234567

2)转换为二进制补码:012→0000001100

345→0101011001

67→1000011

3)转换为序列:000000110001010110011000011

4)将字符个数转换为二进制补码:8→0000001000

5)加入模式指示符(上图中的数字)0001:00010000001000000000110001010110011000011

对于字母、中文、日文等,只是分组的形式和方式不同,基本技术是一样的

3、纠错编码:将前面的码字序列按要求分成块,根据纠错级别和分块码字组成纠错码字,将纠错码字添加到数据码字序列的前面,成为新序列。

当二维码的大小和纠错级别确定后,虽然其能容纳的码字总数和纠错码字数量也确定了,例如:版本10,纠错级别为H时,总共可容纳346个码字,其中纠错码字224个。

也就是说,二维码区域中大约有1/3的码字是冗余的。 对于这224个纠错码字,还可以纠正112个替换错误(如黑白颠倒)或224个读取错误(读取失败或解调失败),

该纠错能力为:112/346=32.4%

4、构建最终的数据信息:在确定大小的情况下,将之前形成的序列按顺序放入块中

将数据按规定分块,然后对每个块进行估计得到对应的纠错码字块,按顺序形成纠错码字块序列,添加到原始数据码字序列前面。

如:D1,D12,D23,D35,D2,D13,D24,D36,...D11,D22,D33,D45,D34,D46,E1,E23,E45,E67,E2,E24,E46,E68, 。 ..

构建矩阵:将检测图形、分隔符、定位图形、校正图形和码字模块加载到矩阵中。

将里面完整的序列填充到相应大小的二维码矩阵的区域中

6、遮蔽:遮蔽图案用于符号的编码区域,使二维码图案中的红色和蓝色(蓝黄)区域能够以最佳百分比分布。

一个算法,不研究了,有兴趣的朋友可以继续。

7. 格式和版本信息:生成格式和版本信息到相应区域。

版本7-40都包含版本信息,没有版本信息的都为0。二维码上的两个位置都包含版本信息,是多余的。

版本信息共有18位,6X3的矩阵,其中数据为6位,如版本号8,数据位的信息为001000,前12位为纠错位。

原文链接:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php php 生成条形码-如何用php生成二维码 https://www.wkzy.net/game/183774.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务