php报名系统学生上传照片后,生成准考证图片下载打印的方法
2019-11-29 admin php 1829
开发一个学生报名系统,采用laravel框架,学生填报姓名身份证并上传证件照片后,需要在后台生成准考证图片,如下图:
实现的方法是,学生初次提交数据写入数据库后,再获取该数据ID:
//填报修改查询结果 public function tbxg(Request $request) { $data = $request->all(); //dd($data); $bm = $request['bm'];//表名 $id = $request['id'];//要修改的id unset($data['_token'],$data['bm'],$data['id']); //视频上传 if ($request->hasFile('上传视频')) { $path = $request['上传视频']->store('files', 'admin'); } if($id == 'new'){ $cxtj = $request['cxtj'];//查询条件 $cxtjsz = json_decode($cxtj, true);//json转数组 unset($data['cxtj']); $createone = array();//等创建或更新的数据 foreach($data as $key=>$value){ if($key=='上传视频'){ $createone[$key] = url('uploads/'.$path); }else{ $createone[$key] = $value; } } DB::table($bm)->updateOrInsert($cxtjsz,$createone);//创建或更新数据 $id = DB::table($bm)->where($cxtjsz, $createone)->value('id'); session()->flash('success', '提交成功,请再次查询核对是否填报正确!'); $this->sctp($bm,$id);//生成准考证图片
然后,将id和bm传递给生成图片的函数:
//生成准考证和图片 public function sctp($bm,$id) { $xgjgs = DB::table($bm)->where('id', $id)->first(); $zkzh = $xgjgs->准考证; $name = $xgjgs->姓名; $sfzh = $xgjgs->身份证号; $sex = $xgjgs->性别; $dbimg = $xgjgs->上传照片; if($dbimg){ $dbimgjson = json_decode($dbimg, true); $xstp = $dbimgjson[0];//学生一寸照片 } header("content-type:image/jpeg");//发送头信息 $im = imagecreatetruecolor(1024, 598);// 设置画布 $font = 'uploads/msyh.ttf';//微软雅黑 $font2 = 'uploads/xbs.ttf';//小标宋 $font3 = 'uploads/kaiti.ttf';//楷休 // 设置背景图片 $bg = imagecreatefromjpeg('uploads/zkz.jpg'); $image = 'uploads/zkz/'.date('YmdHis').mt_rand(100,999).'.jpg';//保存图片到uploads/zkz/ imagecopy($im,$bg,0,0,0,0,1024,598);// 将背景图片拷贝到画布相应位置,后面两个参数为长宽 imagedestroy($bg);//销毁背景图片 //生成一寸照片 list($width, $height) = getimagesize($xstp);//原图大小 $newwidth = 210; $newheight = 250; $src_im = imagecreatefromjpeg($xstp);// 加载图像 $dst_im = imagecreatetruecolor($newwidth, $newheight); imagecopyresized($dst_im, $src_im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height);// 调整大小 imagecopy($im,$dst_im,100,110,0,0,210,250);//imagecopy (resource $背景 , resource $源图 , 放置位置x,y , 从原图x,y开始复制 , 源图宽,高) imagedestroy($src_im);//销毁图片 //写入文字 $blacka = imagecolorallocate($im, 15, 23, 25); // 颜色 imagettftext($im, 23, 0, 710, 185, $blacka, $font,$zkzh);//将ttf文字写到图片中 imagettftext($im, 23, 0, 710, 243, $blacka, $font,$name);//将ttf文字写到图片中 imagettftext($im, 19, 0, 710, 303, $blacka, $font,$sfzh);//将ttf文字写到图片中 imagettftext($im, 23, 0, 710, 355, $blacka, $font,$sex);//将ttf文字写到图片中 imagejpeg($im,$image);// 生成jpeg格式图片 imagedestroy($im);//销毁图片 $zkz = url($image);//生成的准考证图片完整路径 return $zkz; }
这里再添加一个字段:准考证图片。判断如果字段不存在则创建,并更新相应id的准考证图片链接。前台要对此字段进行判断展示。