<?php /** * Created by PhpStorm. * User: dell * Date: 2018/10/10 * Time: 21:05 *//** * 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']); //自动换行处理 $words_text[1] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[1], $this->config['width']); //自动换行处理 $words_text[2] = $this->wordWrap($this->config['size'], $this->config['angle'], $this->config['fontfile'], $words_text[2], $this->config['width']); //自动换行处理 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']); //自动换行处理 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);
© 版权声明
本站网络名称:
乐商网络
本站永久网址:
https://ishoud.com
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ810066660删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容