Maison  >  Article  >  développement back-end  >  Deux façons de générer un code QR avec une image de logo en utilisant PHP

Deux façons de générer un code QR avec une image de logo en utilisant PHP

小云云
小云云original
2018-03-30 11:57:331972parcourir

Cet article partage principalement avec vous deux méthodes de génération de codes QR avec des images de logo en PHP. Il est principalement partagé avec vous sous forme de texte et de code. J'espère qu'il pourra vous aider.

1. Utilisez l'API Google pour générer du code QR
Google fournit une interface de génération de code QR relativement complète. Il est très simple d'appeler l'interface API. Voici le code appelant :

$urlToEncode="http://www.php.cn";
generateQRfromGoogle($urlToEncode);
/**
 * google api 二维码生成【QRcode可以存储最多4296个字母数字类型的任意文本,具体可以查看二维码数据格式】
 * @param string $chl 二维码包含的信息,可以是数字、字符、二进制信息、汉字。
 不能混合数据类型,数据必须经过UTF-8 URL-encoded
 * @param int $widhtHeight 生成二维码的尺寸设置
 * @param string $EC_level 可选纠错级别,QR码支持四个等级纠错,用来恢复丢失的、读错的、模糊的、数据。
 * L-默认:可以识别已损失的7%的数据
 * M-可以识别已损失15%的数据
 * Q-可以识别已损失25%的数据
 * H-可以识别已损失30%的数据
 * @param int $margin 生成的二维码离图片边框的距离
 */
function generateQRfromGoogle($chl,$widhtHeight ='150',$EC_level='L',$margin='0')
{
 $chl = urlencode($chl);
 echo &#39;<img src="http://chart.apis.google.com/chart?chs=&#39;.$widhtHeight.&#39;x&#39;.$widhtHeight.&#39;
 &cht=qr&chld=&#39;.$EC_level.&#39;|&#39;.$margin.&#39;&chl=&#39;.$chl.&#39;" alt="QR code" widhtHeight="&#39;.$widhtHeight.&#39;
 " widhtHeight="&#39;.$widhtHeight.&#39;"/>&#39;;
}

2. Utilisez la bibliothèque de génération de codes QR PHP PHP QR Code pour générer des codes QR

PHP QR Code est une bibliothèque de génération de codes QR PHP qui peut être utilisée pour générer facilement des codes QR. le site officiel propose Pour les téléchargements et plusieurs démos de démonstration, vérifiez l'adresse : http://phpqrcode.sourceforge.net/.
Après avoir téléchargé la bibliothèque de classes fournie par le site officiel, il vous suffit d'utiliser phpqrcode.php pour générer le code QR. Bien entendu, votre environnement PHP doit activer le support GD2. phpqrcode.php fournit une méthode clé png(), dans laquelle le paramètre text indique la génération d'un texte d'information à deux chiffres ; le paramètre text indique la génération d'un texte d'information à deux chiffres ; le paramètre outfile indique s'il faut générer une image de code QR ; fichier, la valeur par défaut est non ; Le niveau du paramètre représente le taux de tolérance aux pannes, c'est-à-dire que la zone couverte peut toujours être reconnue, respectivement L (QRECLEVELL, 7level représente le taux de tolérance aux pannes, c'est-à-dire que la zone couverte peut toujours être reconnue, respectivement L (QRECLEVELL, 7size représente la taille de l'image générée, la valeur par défaut est 3 ; le paramètre margin représente la valeur d'espacement de la zone vide de la bordure autour du code QR ; le paramètre margin représente la valeur d'espacement du blanc zone de la bordure autour du code QR ; le paramètre saveandprint indique s'il faut enregistrer le code QR et l'afficher. >L'appel de PHP QR Code est très simple. Le code suivant peut générer un code QR avec le contenu "http://. www.jb51.net".
Le code PHP

inclut 'phpqrcode.php';
public static function png($text, $outfile=false, $level=QR_ECLEVEL_L, $size=3, $margin=4,
$saveandprint=false)
{
 $enc = QRencode::factory($level, $size, $margin);
 return $enc->encodePNG($text, $outfile, $saveandprint=false);
}
QRcode::png('http://www.jb51.net');


Dans application réelle, nous ajouterons notre propre LOGO au milieu du QR code pour renforcer l'effet publicitaire. Comment générer un QR code contenant un logo ? En fait, le principe est très simple. Utilisez d'abord PHP QR Code pour générer un QR ? image de code, puis utilisez les fonctions liées à l'image de PHP pour ajouter l'image du logo précédemment préparée au code QR original nouvellement généré au milieu de l'image de code, puis régénérez une nouvelle image de code QR


. Ce qui suit est une référence au code ci-dessus, qui ne produit pas de fichiers image et est pratique pour appeler. Enregistrez le code suivant sous

include &#39;phpqrcode.php&#39;;
$value = &#39;http://www.jb51.net&#39;; //二维码内容
$errorCorrectionLevel = &#39;L&#39;;//容错级别
$matrixPointSize = 6;//生成图片大小
//生成二维码图片
QRcode::png($value, &#39;qrcode.png&#39;, $errorCorrectionLevel, $matrixPointSize, 2);
$logo = &#39;logo.png&#39;;//准备好的logo图片
$QR = &#39;qrcode.png&#39;;//已经生成的原始二维码图
  
if ($logo !== FALSE) {
 $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, &#39;helloweba.png&#39;);
echo &#39;<img src="helloweba.png">&#39;;
Étant donné que les codes QR permettent un certain degré de tolérance aux pannes. , les codes QR généraux peuvent toujours être décodés même s'ils sont partiellement couverts. Souvent, lorsque nous scannons un code QR, nous ne pouvons même pas en scanner la moitié. Le résultat de l'analyse peut être décodé à plusieurs reprises. l'information pour améliorer sa tolérance aux pannes. C'est pourquoi l'ajout d'une image LOGO au milieu du code QR n'affecte pas le résultat du décodage

Recommandations associées :
<?php
include &#39;phpqrcode.php&#39;;
$value = $_GET[&#39;url&#39;];//二维码内容
$errorCorrectionLevel = &#39;L&#39;;//容错级别
$matrixPointSize = 6;//生成图片大小
//生成二维码图片
QRcode::png($value, &#39;qrcode.png&#39;, $errorCorrectionLevel, $matrixPointSize, 2);
$logo = &#39;jb51.png&#39;;//准备好的logo图片
$QR = &#39;qrcode.png&#39;;//已经生成的原始二维码图
 
if ($logo !== FALSE) {
 $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);
}
//输出图片
Header("Content-type: image/png");
ImagePng($QR);

Implémentation PHP de. Classe de code QR avec logo

Exemple de code QR WeChat généré par PHP

Comment produire et télécharger un code QR 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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn