Maison >développement back-end >Problème PHP >Comment générer et identifier des codes QR avec PHP

Comment générer et identifier des codes QR avec PHP

醉折花枝作酒筹
醉折花枝作酒筹avant
2021-05-27 17:54:414233parcourir

Cet article vous présentera comment générer et identifier des codes QR en PHP. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Comment générer et identifier des codes QR avec PHP

Classification des codes QR

  • Code QR empilé linéaire

  • Code QR matriciel

Avantages et inconvénients du code QR

Avantages

  • Grande capacité d'information

  • Large plage de codage

  • Forte tolérance aux pannes

  • Fiabilité de décodage élevée

  • Les mesures de cryptage peuvent être introduit

  • Faible coût et facile à produire

Inconvénients

  • La technologie du code QR est devenue un nouveau canal de propagation des virus de téléphonie mobile et des sites Web de phishing

  • Fuite d'informations

Trois grandes normes internationales actuellement populaires

  • PDF417 : Ne prend pas en charge le chinois

  • DM : Le brevet n'est pas divulgué, les frais de brevet doivent être payés

  • QR CODE : Divulgation des brevets, prise en charge du chinois

Capacité de correction des erreurs du QR CODE

  • Niveau L : environ 7 % des mots de code de données peuvent être corrigé

  • Niveau M : environ 15 % des mots de passe de données peuvent être corrigés

  • Niveau Q : environ 25 % des mots de passe de données peuvent être corrigés en erreur

  • Niveau H : environ 30 % des mots de code de données peuvent être corrigés

Prérequis

  • Bibliothèque GD

1. PHP génère du QR CODE

  • Site officiel : http://phpqrcode.sourceforge.net/

  • Télécharger le code source : https://github.com/endroid/qr-code

Comment générer et identifier des codes QR avec PHP

1. qrcode_create.php

ps : Générer un code QR ordinaire

<?php
include_once "./qrcode/phpqrcode.php";

/**
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:保存路径
 * 在浏览器上直接生成一个二维码(内容为abc)
 */
QRcode::png("abc");
QRcode::png("ABC",false,QR_ECLEVEL_L,10,5,false);

/**
 * 生成文件到本地
 * 参数:p1:二维码包含的内容 p2:输出的文件名 p3:容错级别 p4:大小 p5:外边距margin p6:是否保存并打印(false 直接生成 true 生成且打印)
 * PS:$saveandprint源码的p6参数做了修改
 */

QRcode::png("ABC","ABC.jpg",QR_ECLEVEL_H,10,2,false);

2 qrcode_logo.php

ps : Générer un code QR avec logo<.>

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/8/16
 * Time: 10:43
 */
include "./qrcode/phpqrcode.php";
$txt = "测试内容";
$picPathAndName = "./pic/ABC.jpg";//二维码保存路径和名称
$level = &#39;L&#39;;
$size = 5;
$is_logo = 1;//是否包含Logo 0否 1是
$margin = 2;//边距
$saveAndPrint = true;//是否保存,保存时,$picPathAndName设置为true

//生成二维码图片QRcode::png($txt, $picPathAndName, $level, $size, $margin,$saveAndPrint);

if($is_logo == 1){
    $QR = $picPathAndName; //已经生成的原始二维码图
    $Logo = &#39;./pic/logo.png&#39;;
    $Logo_re = &#39;./pic/test_logo.png&#39;;
    $QR = imagecreatefromstring(file_get_contents($QR));
    $Logo = imagecreatefromstring(file_get_contents($Logo));
    $QR_width = imagesx($QR); //二维码图片宽度
    $QR_height = imagesy($QR); //二维码图片高度
    $logo_width = imagesx($Logo); //logo图片宽度
    $logo_height = imagesy($Logo); //logo图片高度
    $logo_qr_width = $QR_width / 5;
    $scale = $logo_width / $logo_qr_width;
    $logo_qr_height = $logo_height / $scale;
    $from_width = ($QR_width - $logo_qr_width) / 2;
    imagecopyresampled($QR, $Logo, $from_width, $from_width, 0, 0, $logo_qr_width, $logo_qr_height, $logo_width, $logo_height);
    //输出图片
    imagepng($QR, $Logo_re);
}

3. qrcode_vcard.php (Générer une signature électronique)

Format vCard : https://zh.wikipedia.org/wiki/VCard

<?php
/**
 * Created by PhpStorm.
 * User: user
 * Date: 2018/8/15
 * Time: 23:00
 */
require_once "./qrcode/phpqrcode.php";

/**
 * 生成电子签名
 * PS;使用微信扫描二维码
 */
$content = &#39;BEGIN:VCARD&#39; . "\n";//起始标志
$content .= &#39;VERSION:2.1&#39; . "\n";//当前版本
$content .= &#39;N:周&#39; . "\n";//姓
$content .= &#39;FN:勇&#39; . "\n";//名
$content .= &#39;ORG:江苏东大集成电路系统有限公司&#39; . "\n";//公司名称
$content .= &#39;TITLE:PHP研发程序员&#39; . "\n";//职位
$content .= &#39;TEL;WORK;VOICE:0523-83623173&#39; . "\n";//工作电话
$content .= &#39;ADR;WORK:;;高新区星火路#2;南京市;江苏省;225762;中国&#39; . "\n";//工作地址
$content .= &#39;ADR;HOME:;;下圩镇王横村178号;兴化市;江苏省;225762;中国&#39; . "\n";//家庭地址(街道,地级市,省,邮编,国家)
$content .= &#39;TEL;TYPE:18000001111&#39; . "\n";//移动电话
$content .= &#39;EMAIL:123456@qq.com&#39; . "\n";//邮箱
$content .= &#39;URL:www.baidu.com&#39; . "\n";//个人主页
$content .= &#39;END:VCARD&#39; . "\n";//结束标志
QRcode::png($content);

2. JQUERY génère le QR CODE

Adresse du code source : https://github.com/jeromeetienne/jquery-qrcode

jquery_create.php

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Jquery生成二维码</title>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script type="text/javascript" src="./jquery-qrcode/jquery.qrcode.min.js"></script>
</head>
<body>
<div id="qrcode"></div>
<script>
    //$(&#39;#qrcode&#39;).qrcode("this plugin is great");
    $(&#39;#qrcode&#39;).qrcode({width: 64,height: 64,text: "jason"});
</script>
</body>
</html>

3. Reconnaissance PHP du code QR

1. Méthode 1

Exigences en matière d'environnement, installez les extensions suivantes

- ImageMagick

- zbar

- php-zbarcode

2. Méthode 2

PHP identifie le code QR (pas besoin de installer l'extension), des tests préliminaires peuvent être effectués avec des codes QR ordinaires, des codes QR avec logo, le niveau de tolérance aux pannes doit être défini plus haut, la page peut être

classe qrReader : https://github.com/ baagee/php_QrReader

<?php
include_once(&#39;./qrReader/lib/QrReader.php&#39;);
$qrcode = new QrReader(&#39;./test_logo.png&#39;);  //图片路径
$text = $qrcode->text(); //返回识别后的文本
echo $text;

Apprentissage recommandé :

Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer