php 판 로고 가 있 는 QR 코드 소스 코드 생 성

자신의 PHP QR 코드 API 소스 코드 구축
    /**
     *        (    logo    )
     *
     * @param string $data      
     *             :http://www.baidu.cn weixin://wxpay/bizpayurl?pr=0tELnh9
     * @param string $saveDir      (  :Qrcode)
     * @param string $logo   logo  
     *             :./Public/Default/logo.jpg
     *             :1、      (.);2、    Logo   ,  jpg    ;3、       xx*xx
     * 
     *   :       logo    
     * 
     * @return
     */
    public function createQrcode($data,$saveDir="Qrcode",$logo = "")
    {
        $rootPath = C("IMAGE_ROOT_PATH");
        $path = $saveDir.'/'.date("Y-m-d").'/';
        $fileName = uniqid();
        if (!is_dir($rootPath.$path))
        {
            mkdir($rootPath.$path,0777,true);
        }
        $originalUrl = $path.$fileName.'.png';
        
        Vendor('phpqrcode.phpqrcode');
        $object = new \QRcode();
        $errorCorrectionLevel = 'L';    //    
        $matrixPointSize = 20;            //      (              )
        $object->png($data,$rootPath.$originalUrl,$errorCorrectionLevel, $matrixPointSize, 2);
        
        //       logo    
        if(file_exists($logo))
        {
            $QR = imagecreatefromstring(file_get_contents($rootPath.$originalUrl));        //        。
            $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 / 4;       //    logo   (     1/5)
            $scale = $logo_width/$logo_qr_width;       //logo      (    /      )
            $logo_qr_height = $logo_height/$scale;  //    logo   
            $from_width = ($QR_width - $logo_qr_width) / 2;   //    logo        
            
            //           
            //imagecopyresampled()      (   )                  
            imagecopyresampled($QR, $logo, $from_width, $from_width, 0, 0, $logo_qr_width,$logo_qr_height, $logo_width, $logo_height);
            
            //    
            imagepng($QR, $rootPath.$originalUrl);
            imagedestroy($QR);
            imagedestroy($logo);
        }
        
        $result['errcode'] = 0;
        $result['errmsg'] = 'ok';
        $result['data'] = $originalUrl;
        return $result;
    
    }
    
    /**
     *          
     *       base64    
     *                  
     *
     * @param string $data      
     *             :http://www.tf4.cn weixin://wxpay/bizpayurl?pr=0tELnh9
     *
     * @return
     */
    public function createTempQrcode($data)
    {
        Vendor('phpqrcode.phpqrcode');
        $object = new \QRcode();
        $errorCorrectionLevel = 'L';    //    
        $matrixPointSize = 5;            //      
        
        //     
        ob_start();
        //       
        $returnData = $object->png($data,false,$errorCorrectionLevel, $matrixPointSize, 2);
        //                       ,  base64_encode       ,  json     。
        $imageString = base64_encode(ob_get_contents());
        //     
        ob_end_clean();
        $base64 = "data:image/png;base64,".$imageString;
        
        $result['errcode'] = 0;
        $result['errmsg'] = 'ok';
        $result['data'] = $base64;
        return $result;
    }

좋은 웹페이지 즐겨찾기