| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- <?php
 
- namespace app\common\util;
 
- class QrcodeUtil
 
- {
 
-     /**
 
-      * @param $yqcode 二维码内容
 
-      * @param int $type 0=二维码输出内容 1=保存二维码到指定位置
 
-      * @param string $savepath
 
-      * @return bool|false|resource
 
-      */
 
-     static public function create($yqcode,$type=0,$savepath='',$size=6){
 
-         try{
 
-             //生成二维码图片
 
-             $errorCorrectionLevel = 3 ;//容错级别
 
-             $matrixPointSize = $size;//生成图片大小
 
-             $temp = './uploads/temp/'.md5($yqcode).mt_rand(1000,9999).'.png';
 
-             if($type == 1){
 
-                 $dirfile = dirname($savepath);
 
-                 if(!file_exists($dirfile)){
 
-                     @mkdir($dirfile,0777);
 
-                 }
 
-                 $matrixPointSize = 4;
 
-             }
 
-             //判断本地是否存在临时的先删了
 
-             if (file_exists($temp)) {
 
-                 @unlink($temp);
 
-             }
 
-             //生成二维码图片
 
-             include_once env('root_path').'/extend/phpqrcode/phpqrcode.php';
 
-             \QRcode::png($yqcode, $temp, $errorCorrectionLevel, $matrixPointSize, 2);
 
-             $logo = env('root_path').'/public/logo.png';
 
-             if (!empty($logo)) {
 
-                 $QRBuffer = self::addLogoQrcode($temp, $logo);
 
-             } else {
 
-                 $QRBuffer = imagecreatefromstring(self::print72dip300dip(file_get_contents($temp)));
 
-             }
 
-             //删除临时文件
 
-             if (file_exists($temp)) {
 
-                 @unlink($temp);
 
-             }
 
-             if($type == 0){
 
-                 return $QRBuffer;
 
-             }else{
 
-                 imagejpeg($QRBuffer,$savepath,100);
 
-                 ImageDestroy($QRBuffer);
 
-                 return true;
 
-             }
 
-         }catch (\Exception $e){
 
-             return false;
 
-         }
 
-     }
 
-     //添加LOGO
 
-     public static function addLogoQrcode($QRTempPath, $logoPath)
 
-     {
 
-         $QRBuffer = imagecreatefromstring(self::print72dip300dip(file_get_contents($QRTempPath)));
 
-         $logo = imagecreatefromstring(self::print72dip300dip(file_get_contents($logoPath)));
 
-         $QR_width = imagesx($QRBuffer);//二维码图片宽度
 
-         $QR_height = imagesy($QRBuffer);//二维码图片高度
 
-         $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(
 
-             $QRBuffer,
 
-             $logo,
 
-             $from_width,
 
-             $from_width,
 
-             0,
 
-             0,
 
-             $logo_qr_width,
 
-             $logo_qr_height,
 
-             $logo_width,
 
-             $logo_height
 
-         );
 
-         return $QRBuffer;
 
-     }
 
-     //浏览器默认输出为72DPI,打印要求为300DPI
 
-     public static function print72dip300dip($QRBufferStr)
 
-     {
 
-         //数据块长度为9
 
-         $len = pack("N", 9);
 
-         //数据块类型标志为pHYs
 
-         $sign = pack("A*", "pHYs");
 
-         //X方向和Y方向的分辨率均为300DPI(1像素/英寸=39.37像素/米),单位为米(0为未知,1为米)
 
-         $data = pack("NNC", 300 * 39.37, 300 * 39.37, 0x01);
 
-         //CRC检验码由数据块符号和数据域计算得到
 
-         $checksum = pack("N", crc32($sign . $data));
 
-         $phys = $len . $sign . $data . $checksum;
 
-         $pos = strpos($QRBufferStr, "pHYs");
 
-         if ($pos > 0) {
 
-             //修改pHYs数据块
 
-             $QRBufferStr = substr_replace($QRBufferStr, $phys, $pos - 4, 21);
 
-         } else {
 
-             //IHDR结束位置(PNG头固定长度为8,IHDR固定长度为25)
 
-             $pos = 33;
 
-             //将pHYs数据块插入到IHDR之后
 
-             $QRBufferStr = substr_replace($QRBufferStr, $phys, $pos, 0);
 
-         }
 
-         return $QRBufferStr;
 
-     }
 
- }
 
 
  |