<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. PHP实现文字写入图片功能

         更新时间:2019年02月18日 12:10:11   作者:叶少翔   我要评论

        这篇文章主要为大家详细介绍了PHP实现文字写入图片功能,具有一定的参?#25216;?#20540;,感兴趣的小伙伴们可以参?#23478;?#19979;

        本文实例为大家分享了PHP实现文字写入图片的具体代码,供大家参考,具体内容如下

        /**
         * PHP实现文字写入图片
         */
        class wordsOnImg {
         
          public $config = null;
         
          /**
           * @param $config 传入参数
           * @param $config['file'] 图片文件
           * @param $config['size'] 文字大小
           * @param $config['angle'] 文字的水平角度
           * @param $config['fontfile'] 字体文件路径
           * @param $config['width'] 预先设置的宽度
           * @param $config['x'] 开始写入时的横坐标
           * @param $config['y'] 开始写入时的纵坐标
           */
          public function __construct($config=null){
            if(empty($config)){
              return 'must be config';
            }
            $fileArr = explode(".",$config['file']);
            $config['file_name'] = $fileArr[0];
            $config['file_ext'] = $fileArr[1];
            $this->config = $config;
          }
          /**
           * PHP实现图片上写入实现文字自动换行
           * @param $fontsize 字体大小
           * @param $angle 角度
           * @param $font 字体路径
           * @param $string 要写在图片上的文字
           * @param $width 预先设置图片上文字的宽度
           * @param $flag  换行时单词不折行
           */
          public function wordWrap($fontsize,$angle,$font,$string,$width,$flag=true) {
            $content = "";
            if($flag){
              $words = explode(" ",$string);
              foreach ($words as $key=>$value) {
                $teststr = $content." ".$value;
                $testbox = imagettfbbox($fontsize, $angle, $font, $teststr);
                //判断拼接后的字符串是否超过预设的宽度
                if(($testbox[2] > $width)) {
                  $content .= "\n";
                }
                $content .= $value." ";
              }
            }else{
              //将字符串拆分成一个个单字 保存到数组 letter 中
              for ($i=0;$i<mb_strlen($string);$i++) {
                $letter[] = mb_substr($string, $i, 1);
              }
              foreach ($letter as $l) {
                $teststr = $content." ".$l;
                $testbox = imagettfbbox($fontsize, $angle, $font, $teststr);
                // 判断拼接后的字符串是否超过预设的宽度
                if (($testbox[2] > $width) && ($content !== "")) {
                  $content .= "\n";
                }
                $content .= $l;
              }
            }
            return $content;
          }
         
          /**
           * 实现写入图片
           * @param $text 要写入的文字
           * @param $flag 是否直接输出到浏览器,默认是
           */
          public function writeWordsToImg($text,$flag=true){
            if(empty($this->config)){
              return 'must be config';
            }
            //获取图片大小
            $img_pathWH = getimagesize($this->config['file']);
            //打开指定的图片文件
            $im = imagecreatefrompng($this->config['file']);
            #设置水印字体颜色
            $color = imagecolorallocatealpha($im,0, 0, 255, 75);//蓝色
            $have = false;
            if(stripos($text,"<br/>")!== false){
              $have = true;
            }
            if($have){
              $words_text = explode("<br/>",$text);
              $words_text[0] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[0], $this->config['width']); //自动换?#20889;?#29702;
              $words_text[1] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[1], $this->config['width']); //自动换?#20889;?#29702;
              $words_text[2] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[2], $this->config['width']); //自动换?#20889;?#29702;
              imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y'], $color, $this->config['fontfile'], $words_text[0]);
              imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y']+30, $color, $this->config['fontfile'], "  ".$words_text[1]);
              imagettftext($im, $this->config['size'], $this->config['angle'], $img_pathWH[0]/2+70, $img_pathWH[1]-80, $color, $this->config['fontfile'], $words_text[2]);
              if($flag){
                header("content-type:image/png");
                imagepng($im);
                imagedestroy($im);
              }
              imagepng($im,$this->config['file_name'].'_1.'.$this->config['file_ext']);
              imagedestroy($im);
            }
            $words_text = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $text, $this->config['width']); //自动换?#20889;?#29702;
            imagettftext($im, $this->config['size'], $this->config['angle'], $this->config['x'], $this->config['y'], $color, $this->config['fontfile'], $words_text);
            if($flag){
              header("content-type:image/png");
              imagepng($im);
              imagedestroy($im);
            }
            imagepng($im,$this->config['file_name'].'_1.'.$this->config['file_ext']);
            imagedestroy($im);
          }
        }
         
        $text = "Dear Kang<br/>If you can hold something up and put it down, it is called weight lifting;if you can hold something up but can never put it down, it's called bueden bearing. Pitifully, most of people are bearing heavy burdens when they are in love.\n\nBeing nice to someone you dislike doesn't mean you're a hypocritical people. It means you're mature enough to tolerate your dislike towards them.<br/>Mr. Kang";
         
        $data = array(
          'file'=>'20171226152410.png',
          'size'=>12,
          'angle'=>0,
          'fontfile'=>'./Font/ChalkboardSE.ttc',
          'width'=>270,
          'x'=>20,
          'y'=>70
        );
        //使用
        $wordsOnImgObj = new wordsOnImg($data);
        $wordsOnImgObj->writeWordsToImg($text);

        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

        相关文章

        • php中spl_autoload详解

          php中spl_autoload详解

          SPL 是Standard PHP Library(标准PHP库)的缩写。它是PHP5引入的一个扩展库,其主要功能包括autoload机制的实现及包括各种Iterator接口或类。 SPL autoload机制的实现是通过将函数指针autoload_func指向自己实现的具有自动装载功能的函数来实现的。
          2014-10-10
        • PHP记录搜索引擎蜘蛛访问网站足迹的方法

          PHP记录搜索引擎蜘蛛访问网站足迹的方法

          这篇文章主要介绍了PHP记录搜索引擎蜘蛛访问网站足迹的方法,实例分析了针对php记录搜索引擎蜘蛛访?#39318;?#36857;的技巧,涉及数据库的创建及php记录各类常见搜索引擎访?#23454;?#26041;法,需要的朋友可以参考下
          2015-04-04
        • PHP实现二维数组中的查找算法小结

          PHP实现二维数组中的查找算法小结

          这篇文章主要介绍了PHP实现二维数组中的查找算法,涉及PHP数组遍历、判断、计算?#35748;?#20851;操作技巧,需要的朋友可以参考下
          2018-06-06
        • PHP基于CURL发送JSON格式字符串的方法示例

          PHP基于CURL发送JSON格式字符串的方法示例

          这篇文章主要介绍了PHP基于CURL发送JSON格式字符串的方法,结合实例形式分析了php使用curl发送json格式字符串的相关属性设置及数据接收等操作技巧,需要的朋友可以参考下
          2018-03-03
        • 使用eAccelerator?#29992;躊HP程序

          使用eAccelerator?#29992;躊HP程序

          这款软件的功能就是通过在内存中缓存PHP文件从而加速PHP程序的执?#20852;?#24230;。由于MMCache的原作者被Zend挖走,MMCache的开发一直处于停滞状态。而Eaccelerator却借鉴了MMCache的优点而一直在不断的更新。
          2008-10-10
        • 一个显示某段时间内每个月的方法 返回由这些月份组成的数组

          一个显示某段时间内每个月的方法 返回由这些月份组成的数组

          一个显示某段时间内每个月的方法 返回由这些月份组成的数组,需要的朋友可以参考下
          2012-05-05
        • PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法

          PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决

          这篇文章主要介绍了PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法,需要的朋友可以参考下
          2014-05-05
        • PHP下用rmdir实现删除目录的三种方法小结

          PHP下用rmdir实现删除目录的三种方法小结

          PHP本身有一个rmdir()函数可以用来删除目录,不过要求必须是空目录,本文列举了三种方法。1、递规法;2、系统调用法;3、循环法 。
          2008-04-04
        • PHP类的封装与继承详解

          PHP类的封装与继承详解

          类是面向对象中的重要概念,而封装?#22270;?#25215;是面向对象的重要特点。这篇文章我们就重点讨论一下封装、继承这两个特点,给出一些列子,供大家学习参考。
          2015-09-09
        • php目录拷贝实现方法

          php目录拷贝实现方法

          这篇文章主要介绍了php目录拷贝实现方法,通过一个自定义递归调用函数实现对目录的拷贝功能,具有一定参考借鉴价值,需要的朋友可以参考下
          2015-07-07

        最新评论

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      2. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>