php网站制作如何生成二维码

2021-01-07
第一种方法找网上的api接口
比如:联图

品味二维码:


草料:


其他都可以在网上搜到很多,但是这些api可能过一段时间会失效,以前就遇到过这样的情况,这就接口不可控性太大,所以我们要介绍第二种方法
二、用插件生成二维码
这里使用的是PHPQRcode 新建函数(这里用的thinkPhp框架)
/**
* 生成二维码
* @param $save_path 二维码保存路径
* @param string $qr_data 手机扫描后要跳转的网址
* @param string $qr_level 默认纠错比例 分为L、M、Q、H四个等级,H代表最高纠错能力
* @param int $qr_size 二维码图大小,1-10可选,数字越大图片尺寸越大
* @param string $save_prefix 图片名称前缀
* @return bool|string
*/
function createQRcode($save_path, $qr_data = 'PHP QR Code :)', $qr_level = 'L', $qr_size = 4, $save_prefix = 'qrcode') {
  if (!isset($save_path)) return '';
  //设置生成png图片的路径
  $PNG_TEMP_DIR = & $save_path;
  //导入二维码核心程序
  vendor('PHPQRcode.class#phpqrcode'); //PHPQRcode是文件夹名字,class#phpqrcode就代表class.phpqrcode.php文件名
  //检测并创建生成文件夹
  if (!file_exists($PNG_TEMP_DIR)) {
      mkdir($PNG_TEMP_DIR);
  }
  $filename = $PNG_TEMP_DIR . 'test.png';
  $errorCorrectionLevel = 'L';
  if (isset($qr_level) && in_array($qr_level, array('L', 'M', 'Q', 'H'))) {
      $errorCorrectionLevel = & $qr_level;
  }
  $matrixPointSize = 4;
  if (isset($qr_size)) {
      $matrixPointSize = & min(max((int)$qr_size, 1), 10);
  }
  if (isset($qr_data)) {
      if (trim($qr_data) == '') {
          die('data cannot be empty!');
      }
      //生成文件名 文件路径+图片名字前缀+md5(名称)+.png
      $filename = $PNG_TEMP_DIR . $save_prefix . md5($qr_data . '|' . $errorCorrectionLevel . '|' . $matrixPointSize) . '.png';
      //开始生成
      QRcode::png($qr_data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
  } else {
      //默认生成
      QRcode::png('PHP QR Code :)', $filename, $errorCorrectionLevel, $matrixPointSize, 2);
  }
  if (file_exists($PNG_TEMP_DIR . basename($filename))) {
      return basename($filename);
  } else {
      return FALSE;
  }
}

函数调用
$save_path = 'Qrcode/'; //图片存储的绝对路径
$qr_data = C('PROTOCOL') . $_SERVER['SERVER_NAME'] .   . '/Share/member.html?str=' . $member['mstr'];
$qr_level = 'H';
$qr_size = '10';
$save_prefix = 'ZETA';
$filename = createQRcode($save_path, $qr_data, $qr_level, $qr_size, $save_prefix);
if ($filename) {
    $pic =   . '/' . $save_path . $filename;
}
$this->pic = $pic;

如何在利用PHPQRcode生成的二维码中间加上logo图片呢
$logo =   . $member['picture']; //logo的图片地址
import("Org.Util.File");
$file = new \File($logo);
$logo = $file->getRealFile();
$file = new \File($pic);
$QR = $file->getRealFile();; //二维码图片地址
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_height = imagesy($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, $save_path . $filename); //跟logo合并之后的地址
写评论...