PHP文字合成图片的函数刚写完验证OK
public function createOfficialCertsImg($id=0,$type=1) { $official_certs_id=$id; //获取证书详细信息 $certinfo=db('official_certs')->where('id='.$official_certs_id)->find(); $userinfo=db('client_users')->where('user_id='.$certinfo['user_id'])->find(); //文件名 $filename=$userinfo['user_id'].'_'.$certinfo['course_id']."_".$type; //背景图片的url $type==1 && $bannerimg = ROOT_PATH . 'public/uploads/certsimg/1.jpg'; $type==2 && $bannerimg = ROOT_PATH . 'public/uploads/certsimg/2.jpg'; $type==3 && $bannerimg = ROOT_PATH . 'public/uploads/certsimg/3.jpg'; $sex='未知'; $userinfo['user_sex']==1 && $sex='男'; $userinfo['user_sex']==2 && $sex='女'; //这是要插入到图片的文字 $name = $certinfo['user_name']; $idnum = $certinfo['cert_id']; $validtime = $certinfo['cert_endtime']; //开始图片处理 if ($bannerimg) { //这是合成后的图片保存的路径 $upload_dir = "public/uploads/certsimg/"; if (is_file($bannerimg)) { //创建画布 $logo = imagecreatefromstring(file_get_contents($bannerimg)); //设置文字颜色 $black = imagecolorallocate($logo, 0, 0, 0); //写的文字用到的字体 $font = ROOT_PATH . 'public/uploads/certsimg/simfang.ttf'; //在图片里插入文字$black imagettftext($logo, 20, 0, 124, 146, $black,$font, $name); imagettftext($logo, 20, 0, 318, 146, $black,$font, $sex); imagettftext($logo, 20, 0, 170, 205, $black, $font, $idnum); imagettftext($logo, 20, 0, 170, 270, $black, $font, $validtime); //生成图片 imagepng($logo, ROOT_PATH . $upload_dir . $filename . '.png'); $finalurl='uploads/certsimg/'.$filename . '.png'; } return $finalurl;//返回结果图片url } else { return false; } }
其实整个过程不复杂 比较麻烦的就是 给把文字插入到图片中的位置
imagettftext 第一个参数是是图片位置 然后是字体 第4和5是位置 在图片中的位置 我直接用截图的选择 来进行的定位
如果生成不了文字,那么一定记得把字体文件上传到服务器 设置好位置
大概就是这个样子