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


    大概就是这个样子

  • 相关阅读:
    EF 连接数据库 Mysql (database first ) 一个表对应一个模型
    EF Database first 中,实现 多个表对应一个 实体的 查询
    用五分钟重温委托,匿名方法,Lambda,泛型委托,表达式树 (转sam xiao的博客)
    转,竞争中的操作手法
    最近想买的东西
    换书网,互相换书看
    在线模拟城市
     下面我列出了一些和VC商谈时必须解决的问题。
    时代杂志:生活中离不开的25个网站
    运营社区需要心理学
  • 原文地址:https://www.cnblogs.com/baker95935/p/12743311.html
Copyright © 2020-2023  润新知