PHP中文字写入图片的思路及代码是什么
Admin 2022-07-07 群英技术资讯 276 次浏览
本文实例为大家分享了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']); //自动换行处理 $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);
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们在做开发的时候,有一些需求需要我们根据身份来获取年龄,那么这要如何实现呢?下面小编就给大家分享一下php身份证获取年龄的代码,感兴趣朋友可以参考。
本篇文章小编给大家分享一下python实现修改xml文件内容代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
本篇文章小编给大家分享一下Python类与实例代码使用解析,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
这篇文章主要给大家介绍关于PHP的类与对象相关内容,类与对象功能、用法,对于与新手学习PHP来说,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面我们就一起来学习一下。
swoole是一个面向生产环境的PHP异步网络通信引擎,socket是一个抽象层。socket是系统提供的对tcp/ip操作的接口,swoole这是对socket在进行一个封装并提供php操作接口的PHP扩展。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008