Home >Backend Development >PHP Tutorial >Implementation method of generating QR code with logo in PHP

Implementation method of generating QR code with logo in PHP

墨辰丷
墨辰丷Original
2018-06-04 09:55:213152browse

This article gives you a comparative introduction to two commonly used methods of generating QR codes with logos. It is very practical. Friends in need can choose according to their own needs

1. Class libraries used

1, phpqrcode (php library)

2, qrcode.js (javascript library)

2. Use of phpqrcode

Only uses the PHP class library, that is, the generation of QR codes is operated in the background. Because you want to generate a QR code with a logo in the background, you must first upload the logo image to the server (I used webuploader for uploading)

How to use phpqrcode:

First download phpqrcode: http://phpqrcode.sourceforge.net/

Then remember to introduce the phpqrcode.php file before using it

$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. Use of qrcode.js

Use qrcode.js to directly generate QR codes on the front end. You first need to download jquery.qrcode.js

The use of qrcode is also very simple:

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')       //二维码中间的图片
});

Introduce jquery.qrcode.js and then Write this js code yourself. After execution, the QR code can be displayed and processed.

is mainly the logo reference format in the middle of the QR code. Generally, there are two formats for taking local pictures: one is the local URL, and the other is One is to convert the image into base64 format

At first I tried the local URL format to reference the image, and found that I could only reference the image in the same directory as the js file, so the local URL format was not supported, so I The latter approach was adopted.

Use

236077703fcea6991e81d5305adbee72

to upload and select a local image, and then take it 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
  }
}

Read the file as a string of Data URL strings, and read the small file directly into the page with a URL address in a special format. This special format is base64

3. Comparison between two class libraries

Two class libraries, one operates in the background and the other operates directly in the front end.

phpqrcode generates QR codes and operates in the background, and the generated images are saved on the server. Generally, the generated QR code is saved directly to the local and then used directly. It is rare to go to the server to obtain it for a second time. Therefore, using phpqrcode will cause the pictures in the server to accumulate, taking up unnecessary space, and deleting them will also cost extra money. overhead. So using phpqrcode is not suitable for this QR code generation tool. Moreover, uploading images will also generate unnecessary overhead.

qrcode.js operates directly on the front end. The uploaded images are directly saved in the browser, and the QR code is generated directly on the front end without any background intervention, which reduces unnecessary costs. The necessary overhead will not cause the accumulation of images on the server and occupy unnecessary space.

Summary: The above is the entire content of this article, I hope it will be helpful to everyone's study.

Related recommendations:

php How to read, write and modify json files

php Implementing the method of intercepting specified frames of video into pictures

Basic introduction to PHP regular expressions

The above is the detailed content of Implementation method of generating QR code with logo in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn