PHP生成二维码

开发框架是在ThinkPHP下,刚开始打算用qrcode.js,但用于需转换成二维码的文本太长,超过了qrcode.js的要求,故将转换过程放在后端,用PHP来实现,最后使用的是phpqrcode包。

一、整合到Thinkphp框架

在“ThinkPHP\Library\Vendor\”下新建目录phpqrcode,将压缩包内容解压到该文件夹下。

 

二、用phpqrcode生成二维码

在IndexController控制器下添加如下方法:

public function qrcode($url="www.baidu.com",$level=3,$size=4)

{

     Vendor('phpqrcode.phpqrcode');

     $errorCorrectionLevel =intval($level) ;//容错级别

     $matrixPointSize = intval($size);//生成图片大小

     //生成二维码图片

     $object = new \QRcode();

     $object->png($url, false, $errorCorrectionLevel, $matrixPointSize, 2);  

 }

 

访问:http://127.0.0.1/Index/qrcode即可看到生成的二维码。

 

三、成带logo的二维码

先调用phpqrcode生成一张二维码,再使用PHP的image相关函数将logo图片添加到生成的二维码图片上。

代码如下: 

 include 'phpqrcode.php';   

  $value = 'http://www.cnblogs.com/txw1958/'; //二维码内容  

  $errorCorrectionLevel = 'L';//容错级别  

  $matrixPointSize = 6;//生成图片大小  

  //生成二维码图片  

  QRcode::png($value, 'qrcode.png', $errorCorrectionLevel, $matrixPointSize, 2);  

  $logo = 'logo.png';//准备好的logo图片  

  $QR = '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);  

  }  

  //输出图片  

  imagepng($QR, 'helloweixin.png');  

  echo '<img src="helloweixin.png">';

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值