柔晶美网络工作室

柔晶美网络工作室,倾心于web技术的博客站点

关注我 微信公众号

您现在的位置是: 首页 > 博客日记

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的准考证图片链接。前台要对此字段进行判断展示。

文章评论


需要 登录 才能发表评论
热门评论
0条评论

暂时没有评论!