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


    大概就是这个样子

  • 相关阅读:
    分配一维动态数组or 二维动态数组的方法以及学习 new 方法or vector
    关于i++与++i的学习讨论!
    vector 中需要注意的东西!
    c++中 函数的默认参数 学习
    为什么 c++中函数模板和类模板的 声明与定义需要放到一起?
    c++中赋值运算符重载为什么要用引用做返回值?
    为什么const对象只能调用const成员函数,而不能调用非const成员函数?
    java 文件读写
    java Vector
    getRequestDispatcher
  • 原文地址:https://www.cnblogs.com/baker95935/p/12743311.html
Copyright © 2011-2022 走看看