所有分类
  • 所有分类
  • 其它

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

第一种方法找网上的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合并之后的地址
 

社交账号快速登录