Heim  >  Artikel  >  Backend-Entwicklung  >  (Fortgeschritten) Zusammenfassung, wie man QR-Code mit Logo in PHP generiert

(Fortgeschritten) Zusammenfassung, wie man QR-Code mit Logo in PHP generiert

黄舟
黄舟Original
2017-02-07 09:27:101377Durchsuche

1. Verwendete Klassenbibliotheken

1. phpqrcode (PHP-Bibliothek)

2. Verwendung von phpqrcodeVerwenden Sie ausschließlich 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/

Denken Sie dann daran, die Datei phpqrcode.php einzuführen, bevor Sie sie verwenden

3. Verwendung von qrcode.js

$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的二维码图片
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:

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

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')       //二维码中间的图片});
Es handelt sich hauptsächlich um das Logo-Referenzformat in der Mitte des QR-Codes Es gibt zwei Formate zum Aufnehmen lokaler Bilder: eines ist die lokale URL und das andere dient dazu, das Bild in das Base64-Format zu konvertieren

Zuerst habe ich das lokale URL-Format ausprobiert, um auf das Bild zu verweisen, und festgestellt, dass dies möglich ist Verweisen Sie nur auf das Bild im selben Verzeichnis wie die js-Datei, daher wurde das lokale URL-Format nicht unterstützt, also habe ich den letzteren Weg gewählt.

Verwenden Sie

, um das ausgewählte lokale Bild hochzuladen, und verwenden Sie dann das Base64-Format

<input accept="image/*" type="file" id="file_input">


, um die Datei als Datenzeichenfolge zu lesen URL-Strings: Lesen Sie die kleine Datei direkt in die Seite mit einer URL-Adresse in einem speziellen Format ein. Dieses spezielle Format ist base64

var input = document.getElementById("file_input");  
if(typeof FileReader===&#39;undefined&#39;){  
input.setAttribute(&#39;disabled&#39;,&#39;disabled&#39;);}else{  
input.addEventListener(&#39;change&#39;,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){    
$(&#39;#image&#39;).attr(&#39;src&#39;,this.result);//image为img标签的id  
}}
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 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 werden unnötige Kosten reduziert, wodurch sich keine Bilder auf dem Server ansammeln und unnötiger Speicherplatz belegt wird.

Das Obige ist die Zusammenfassung der (fortgeschrittenen) PHP-Methode zum Generieren von QR-Codes mit Logos. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

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