Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Schritte zum Generieren von QR-Code mit PHP basierend auf der phpqrcode-Klasse

Detaillierte Erläuterung der Schritte zum Generieren von QR-Code mit PHP basierend auf der phpqrcode-Klasse

php中世界最好的语言
php中世界最好的语言Original
2018-05-18 11:11:251869Durchsuche

Dieses Mal werde ich Ihnen eine detaillierte Erklärung der Schritte zum Generieren von QR-Codes mit PHP basierend auf der phpqrcode-Klasse geben Das Folgende ist ein praktischer Fall, werfen wir einen Blick darauf. Es ist ziemlich schwierig, QR-Codes mit der PHP-Sprache zu generieren, außer natürlich, die Schnittstelle aufzurufen, die QR-Code-Bilder generiert (wie die Schnittstelle von Liantu http://www.liantu.com/). Wenn Sie die Codegenerierung selbst schreiben, haben Sie wirklich keine Möglichkeit, anzufangen. Wir können jedoch phpqrcode verwenden, eine vorgefertigte Klassendatei,

PHP-QR-Code-Generierungsklassenbibliothek

, mit der problemlos QR-Codes generiert werden können.

Vorbereitende Vorbereitung:1.phpqrcode-Klasse

Datei-Download

, Download-Adresse: https://sourceforge.net /projects/phpqrcode/2. Die PHP-Umgebung muss die Unterstützung der GD2-Erweiterungsbibliothek aktivieren (normalerweise aktiviert)

Methodeninterpretation: Die heruntergeladene Klassendatei ist ein komprimiertes Paket, das viele Dateien und Demonstrationsprogramme enthält. Wir benötigen nur die Datei phpqrcode.php, um den QR-Code zu generieren. Es handelt sich um eine Sammlungsdatei mehrerer Klassen. Wir müssen die Methode png() (Zeile 3090) der Klasse QRcode (Zeile 2963) verwenden:

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);
}

Der erste Parameter

$text

: Der im QR-Code enthaltene Inhalt kann aus Links, Text, JSON-Strings usw. bestehen. Der zweite Parameter $outfile
: Der Standardwert ist false, es wird keine Datei generiert und nur der zweite Parameter ist Das QR-Code-Bild wird als Ausgabe zurückgegeben; andernfalls müssen der Dateiname und der Pfad zum Speichern des generierten QR-Code-Bildes angegeben werden. Der dritte Parameter$level
: Der Standardwert ist L. Der Werte, die für diesen Parameter übergeben werden können, sind: L(QR_ECLEVEL_L, 7 %), M(QR_ECLEVEL_M, 15 %), Q(QR_ECLEVEL_Q, 25 %), H(QR_ECLEVEL_H, 30 %), dieser Parameter steuert die Fehlertoleranz Rate des QR-Codes. Verschiedene Parameter geben an, dass der Prozentsatz der abgedeckten Fläche, d. h. die abgedeckte Fläche, noch identifiziert werden kann Größe des generierten Bildes, der Standardwert ist 4; Der fünfte Parameter$margin
: Steuern Sie die Größe des leeren Bereichs für die Generierung von QR-Codes; Der sechste Parameter$saveandprint
: Speichern Sie das QR-Code-Bild und zeigen Sie es an, $outfile muss den Bildpfad übergeben;
Verwendungsbeispiel

:

1. QR-Code generieren (Bilddatei generieren)

// 1. 生成原始的二维码(生成图片文件)
function scerweima($url=''){
  require_once 'phpqrcode.php';
  $value = $url;         //二维码内容
  $errorCorrectionLevel = 'L';  //容错级别
  $matrixPointSize = 5;      //生成图片大小
  //生成二维码图片
  $filename = 'qrcode/'.microtime().'.png';
  QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
  $QR = $filename;        //已经生成的原始二维码图片文件
  $QR = imagecreatefromstring(file_get_contents($QR));
  //输出图片
  imagepng($QR, 'qrcode.png');
  imagedestroy($QR);
  return &#39;<img src="qrcode.png" alt="使用微信扫描支付">&#39;;
}
//调用查看结果
echo scerweima(&#39;https://www.baidu.com&#39;);
2. Logo zum generierten QR-Code hinzufügen (Bilddatei generieren)
//2. 在生成的二维码中加上logo(生成图片文件)
function scerweima1($url=&#39;&#39;){
  require_once &#39;phpqrcode.php&#39;;
  $value = $url;         //二维码内容
  $errorCorrectionLevel = &#39;H&#39;;  //容错级别
  $matrixPointSize = 6;      //生成图片大小
  //生成二维码图片
  $filename = &#39;qrcode/&#39;.microtime().&#39;.png&#39;;
  QRcode::png($value,$filename , $errorCorrectionLevel, $matrixPointSize, 2);
  $logo = &#39;qrcode/logo.jpg&#39;; //准备好的logo图片
  $QR = $filename;      //已经生成的原始二维码图
  if (file_exists($logo)) {
    $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 / 4;   //组合之后logo的宽度(占二维码的1/5)
    $scale = $logo_width/$logo_qr_width;  //logo的宽度缩放比(本身宽度/组合后的宽度)
    $logo_qr_height = $logo_height/$scale; //组合之后logo的高度
    $from_width = ($QR_width - $logo_qr_width) / 2;  //组合之后logo左上角所在坐标点
    //重新组合图片并调整大小
    /*
     * imagecopyresampled() 将一幅图像(源图象)中的一块正方形区域拷贝到另一个图像中
     */
    imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
  }
  //输出图片
  imagepng($QR, &#39;qrcode.png&#39;);
  imagedestroy($QR);
  imagedestroy($logo);
  return &#39;<img src="qrcode.png" alt="使用微信扫描支付">&#39;;
}
//调用查看结果
echo scerweima1(&#39;https://www.baidu.com&#39;);3. 生成二维码(不生成图片文件)

//3. 生成原始的二维码(不生成图片文件)
function scerweima2($url=''){
  require_once 'phpqrcode.php';
  $value = $url;         //二维码内容
  $errorCorrectionLevel = 'L';  //容错级别
  $matrixPointSize = 5;      //生成图片大小
  //生成二维码图片
  $QR = QRcode::png($value,false,$errorCorrectionLevel, $matrixPointSize, 2);
}
//调用查看结果
scerweima2('https://www.baidu.com');
Ich glaube, dass Sie die Methode nach dem Lesen beherrschen Der Fall in diesem Artikel finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website.

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte zur Implementierung der WeChat-Rückerstattungsanwendung mit PHP

ThinkPHP-Schritte zur Implementierung von WeChat Zahlung (Jsapi-Zahlung) Ausführliche Erklärung

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Schritte zum Generieren von QR-Code mit PHP basierend auf der phpqrcode-Klasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn