Heim >Backend-Entwicklung >PHP-Tutorial >Implementierungsmethode zum Generieren von QR-Code mit Logo in PHP

Implementierungsmethode zum Generieren von QR-Code mit Logo in PHP

墨辰丷
墨辰丷Original
2018-06-04 09:55:213149Durchsuche

Dieser Artikel gibt Ihnen eine vergleichende Einführung in zwei häufig verwendete Methoden zum Generieren von QR-Codes mit Logos. Es ist sehr praktisch, dass Freunde in Not nach ihren eigenen Bedürfnissen auswählen können.

1 verwendet

1. phpqrcode (PHP-Bibliothek)

2. qrcode.js (Javascript-Bibliothek)

2. Verwendung von phpqrcode

Verwendet nur die PHP-Klassenbibliothek, d. h. die Generierung von QR-Codes erfolgt im Hintergrund. Da Sie einen QR-Code mit einem Logo im Hintergrund generieren möchten, müssen Sie zuerst das Logobild auf den Server hochladen (ich habe zum Hochladen den Webuploader verwendet)

So verwenden Sie phpqrcode:

Zuerst Laden Sie phpqrcode herunter: http://phpqrcode.sourceforge.net/

Dann denken Sie daran, die Datei phpqrcode.php einzuführen, bevor Sie sie verwenden

$value = $url;//二维码内容 
$errorCorrectionLevel = 'L';//设置容错级别 
$matrixPointSize = $size;//生成图片大小 
QRcode::png($value, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);//生成二维码图片 无logo
$logo = $tar_path;//上传至服务器的logo图片 
$QR = 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .'qrcode.png';//已经生成的原始二维码图
 
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);
}
$name = time();
imagepng($QR, 'public_files'.DIRECTORY_SEPARATOR .'code'.DIRECTORY_SEPARATOR .$name.'.png');//输出带logo的二维码图片

3. Verwendung von qrcode.js

Verwenden Sie qrcode.js, um QR-Codes direkt im Frontend zu generieren. Sie müssen zuerst jquery.qrcode.js herunterladen

Die Verwendung von qrcode ist ebenfalls sehr einfach:

var length = size*80;//设置二维码大小
length = parseInt(length);
$("#code_img").qrcode({ //code_img是一个img标签的id
  render : "canvas",  //设置渲染方式,有table和canvas,使用canvas方式渲染性能相对来说比较好
  text : url,  //扫描二维码后显示的内容,可以直接填一个网址,扫描二维码后自动跳向该链接
  width : length,       //二维码的宽度
  height : length,
  background : "#ffffff",    //二维码的后景色
  foreground : "#000000",    //二维码的前景色
  src: $('#image').attr('src')       //二维码中间的图片
});

Führen Sie jquery.qrcode.js ein und schreiben Sie diesen JS-Code dann selbst. Nach der Ausführung kann der QR-Code angezeigt und verarbeitet werden.

Es handelt sich hauptsächlich um das Logo-Referenzformat in der Mitte des QR-Codes. Im Allgemeinen gibt es zwei Formate zum Aufnehmen lokaler Bilder: eines ist die lokale URL und das andere ist die Konvertierung des Bildes in das Base64-Format

Zuerst habe ich versucht, das Bild mit dem lokalen URL-Format zu referenzieren, aber stellte fest, dass nur auf das Bild im selben Verzeichnis wie die js-Datei verwiesen werden konnte, sodass das lokale URL-Format nicht unterstützt wurde. Daher wurde der letztere Ansatz übernommen.

Verwenden Sie

0d4a5a9bdf0732caaa72b182329f6baa

, um ein lokales Bild hochzuladen und auszuwählen, und Nehmen Sie dann das Base64-Format.

var input = document.getElementById("file_input");
 
if(typeof FileReader==='undefined'){
  input.setAttribute('disabled','disabled');
}else{
  input.addEventListener('change',readFile,false);
}
 
function readFile(){
  var file = this.files[0];
  if(!/image\/\w+/.test(file.type)){
    alert("文件必须为图片!");
    return false;
  }
  var reader = new FileReader();
  reader.readAsDataURL(file);
  reader.onload = function(e){
    $('#image').attr('src',this.result);//image为img标签的id
  }
}

liest die Datei als Zeichenfolge von Daten-URL-Zeichenfolgen und liest die kleine Datei mit einer URL-Adresse in einem speziellen Format direkt in die Seite ein. Dieses spezielle Format ist base64

3. Vergleich zwischen zwei Klassenbibliotheken

Zwei Klassenbibliotheken, eine arbeitet im Hintergrund und die andere direkt im Frontend.

phpqrcode generiert QR-Codes und arbeitet im Hintergrund, und die generierten Bilder werden auf dem Server gespeichert. Im Allgemeinen wird der generierte QR-Code direkt lokal gespeichert und dann direkt verwendet. Es kommt selten vor, dass er ein zweites Mal zum Server aufgerufen wird. Daher führt die Verwendung von phpqrcode dazu, dass sich die Bilder auf dem Server ansammeln und unnötigen Speicherplatz belegen , und ihre Löschung verursacht auch zusätzliche Kosten. Daher ist die Verwendung von phpqrcode für dieses QR-Code-Generierungstool nicht geeignet. Darüber hinaus verursacht das Hochladen von Bildern auch zusätzlichen Aufwand

qrcode.js arbeitet direkt im Frontend. Die hochgeladenen Bilder werden direkt im Browser gespeichert und der QR-Code wird direkt im Frontend generiert, ohne dass ein Eingriff im Hintergrund erforderlich ist. Dadurch wird unnötiger Aufwand reduziert. Der erforderliche Overhead führt nicht dazu, dass sich Bilder auf dem Server ansammeln und unnötigen Speicherplatz beanspruchen.

Zusammenfassung: Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe, dass er für das Studium aller hilfreich sein wird.

Verwandte Empfehlungen:

php So lesen, schreiben und ändern Sie JSON-Dateien

php Implementierung der Methode zum Abfangen bestimmter Videobilder in Bilder

Grundlegender Einstieg in reguläre PHP-Ausdrücke

Das obige ist der detaillierte Inhalt vonImplementierungsmethode zum Generieren von QR-Code mit Logo in PHP. 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