PHP文字合成图片的函数刚写完验证OK

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是位置 在图片中的位置  我直接用截图的选择 来进行的定位
如果生成不了文字,那么一定记得把字体文件上传到服务器 设置好位置


大概就是这个样子

原文地址:https://www.cnblogs.com/baker95935/p/12743311.html