Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能示例


Posted in PHP onJuly 07, 2017

本文实例讲述了Laravel使用PHPQRCODE实现生成带有LOGO的二维码图片功能。分享给大家供大家参考,具体如下:

/**
* 利用phpqrcode来实现生成带有logo的二维码图片
*/
public function getQrCode(Request $request){
    $type  =  $request->input('type');//传递的类型 ios | android
    require_once(dirname(__FILE__) . '/phpqrcode/' . 'phpqrcode.php');
    $errorCorrectionLevel = 'H'; // 错误校正
    $matrixPointSize = 5; // 边界空白位置
    $QRcode =  new \QRcode;
    if($type){
      if($type == 'ios'){
        $value =  'http://www.ios.com'; // 二维码存放的内容
        $QRcode->png($value, 'ios.png', $errorCorrectionLevel, $matrixPointSize, 2); //生成二维码
        //echo "二维码已生成";
        $logo = 'logo.png';//logo的图片地址
        //echo " <img src='../../../public/logo.png'>";
        $QR = 'ios.png'; //二维码图片地址
        //echo " <img src='../../../ios.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_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,'ios.png'); //跟logo合并之后的地址
        $a   =  'http://www.ios.com/ios.png';
        $status =  0;
        $msg  =  $a;
      }elseif($type == 'android'){
          $value =  'http://www.android.com'; // 二维码存放的内容
          //var_dump($value);
          $QRcode->png($value, 'android.png', $errorCorrectionLevel, $matrixPointSize, 2); //生成二维码
          //echo "二维码已生成";
          $logo = 'logo.png';//logo的图片地址
          //echo " <img src='../../../public/logo.png'>";
          $QR = 'android.png'; //二维码图片地址
          //echo " <img src='../../../android.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_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,'android.png'); //跟logo合并之后的地址
          $a   =  'http://www.android.com/android.png';
          $status =  0;
          $msg  =  $a;
      }else{
        $status =  1;
        $msg  =  '没有该类型!';
      }
      //QRcode::png($value, 'sunny.png', $errorCorrectionLevel, $matrixPointSize, 2); //生成二维码
    }else{
      $status =  2;
      $msg  =  '参数传递不完整!';
    }
    return response()->json(['status' => $status,'msg' => $msg])->header('Access-Control-Allow-Origin', '*');
}
PHP 相关文章推荐
如何删除多级目录
Oct 09 PHP
php 计算两个时间戳相隔的时间的函数(小时)
Dec 18 PHP
PHP 最大运行时间 max_execution_time修改方法
Mar 08 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
PHP超级全局变量数组小结
Oct 04 PHP
实现PHP框架系列文章(6)mysql数据库方法
Mar 04 PHP
Laravel5.1自定义500错误页面示例
Oct 09 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
Mar 06 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
php mysql PDO 查询操作的实例详解
Sep 23 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
Oct 24 PHP
PHP遍历数组的6种方式总结
Nov 17 PHP
thinkPHP微信分享接口JSSDK用法实例
Jul 07 #PHP
微信开发之获取JSAPI TICKET
Jul 07 #PHP
Yii2第三方类库插件Imagine的安装和使用
Jul 06 #PHP
一个实用的php验证码类
Jul 06 #PHP
万能的php分页类
Jul 06 #PHP
PHP 实现从数据库导出到.csv文件方法
Jul 06 #PHP
php文件上传类的分享
Jul 06 #PHP
You might like
计数器详细设计
2006/10/09 PHP
php+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
用正则获取指定路径文件的名称
2007/02/27 Javascript
一步一步教你写一个jQuery的插件教程(Plugin)
2009/09/03 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
选择器中含有空格在使用示例及注意事项
2013/07/31 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
javascript闭包(Closure)用法实例简析
2015/11/30 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
JS实现简单的tab切换选项卡效果
2016/09/21 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
2017/01/19 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
解决vue的变量在settimeout内部效果失效的问题
2018/08/30 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
Python模块学习 filecmp 文件比较
2012/08/27 Python
Python3 正在毁灭 Python的原因分析
2014/11/28 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
详解DeBug Python神级工具PySnooper
2019/07/03 Python
mac安装python3后使用pip和pip3的区别说明
2020/09/01 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
北京银河万佳Java面试题
2012/03/21 面试题
四年大学生活的个人自我评价
2013/12/11 职场文书
中学家长会邀请函
2014/01/17 职场文书
买卖协议书范本
2014/04/21 职场文书
生产助理岗位职责
2014/06/18 职场文书
个人维稳承诺书
2015/05/04 职场文书
军事博物馆观后感
2015/06/05 职场文书
革命电影观后感
2015/06/18 职场文书
消费者理赔投诉书
2015/07/02 职场文书
中学音乐课教学反思
2016/02/18 职场文书
python实现简单反弹球游戏
2021/04/12 Python
一篇文章学会Vue中间件管道
2021/06/20 Vue.js