二维码 和背景图片的合成

/*
 * @param id : 是二维码传递的参数
 * 大家相互借鉴吧!
*/
public function image(){
       $object_id = $_REQUEST['id'];
       $host = $_SERVER['HTTP_HOST'];
       $url = "http://{$host}/admin/***/***?id=".$object_id;

       //3. 生成原始的二维码(不生成图片文件)
       //引入qrcode类
       Vendor('phpqrcode.phpqrcode');

       //设置qrcode参数
       $path = './image/base.png';
       $errorCorrectionLevel = 'L'; //图片容错级别
       $matrixPointSize = '4';   //生成图片的大小
       //创建对象
       $object = new \QRcode();
       $object::png($url,$path,$errorCorrectionLevel,$matrixPointSize,2); //生成的图片存在image文件夹中

       //创建画布
       $QRImageInfo = imagecreatefrompng($path);  //获取到指定图片对象
       $QR_width = imagesx($QRImageInfo);
       $QR_height = imagesy($QRImageInfo); 

       $width = 132;
       $height = 132;
       $newImage = imagecreatetruecolor($width,$height);   //创建一个图像资源
       $newImage_white = imagecolorallocate($newImage, 255,255,255);//给创建好的图像资源设置白色背景
       imagefill($newImage, 0, 0, $newImage_white);       //填充$newImage

       /* 
        1、要放到的新图片资源(目标图片资源)dst_im 
        2、要缩放的图片资源(原图片资源)src_im 
        3、目标图像开始x坐标 dst_x 
        4、目标图像开始y坐标 dst_y 
        5、原图像的开始x坐标 src_x 
        6、原图像的开始y坐标 src_y 
        7、目标图像的宽度 dst_w 
        8、目标图像的高度 dst_h 
        9、原图像的宽度 src_w 
        10、原图像的高度 src_h
       */
       imagecopyresized($newImage, $QRImageInfo,0, 0, 0, 0, 132, 132, $QR_width, $QR_height);
       $backgroundDir = "./image/background.jpg";//事先准备好的背景图片
       $backgroundImg = imagecreatefromjpeg($backgroundDir); //获取到背景
       imagecopyresampled($backgroundImg, $newImage, 403, 170, 0, 0, 132, 132, 132, 132);
       //两张图片合并
       $resultPngPic = "./image/resultPngPicWithoutLogo.png";//设置最后生成图像的路径
       imagepng($backgroundImg,$resultPngPic);
       imagedestroy($newImage);//销毁中间创建的$newImage资源
       $backgroundImg = imagecreatefromjpeg($resultPngPic);
       if ($backgroundImg) {
          $this->success('图片合成成功');
       }else{
         $this->error('图片合成失败');
       }

    }

你可能感兴趣的:(NoSql)