php生成图片表格自动换行_PHP GD库生成图片自动换行函数,自动分页函数
/* 文字自动换行
* @param $card 画板
* @param $pos 数组,top距离画板顶端的距离,fontsize文字的大小,width宽度,left距离左边的距离,hang_size行高
* @param $str 要写的字符串
* @param $iswrite 是否输出,ture, 花出文字,false只计算占用的高度
* @param $nowHeight 已写入行数;
* @param $second 数组 left 记录换行后据x坐标 ,width 记录换行后最大宽; , maxline 记录最大允许最大行数
* @return 数组 tp:本次写入行数 nowHeight:一共写入行数 residueStr:截取未写完的字符串 height:最后一行据顶部的高度
*/
function textalign($card, $pos, $str, $iswrite,$fontpath,$nowHeight,$second){
$_str_h = $pos["top"];//文字在整个图片距离顶端的位置,也就是y轴的像素距离
$fontsize = $pos["fontsize"];//文字的大小
$width = $pos["width"];//设置文字换行的宽带,也就是多宽的距离,自动换行
$margin_lift = $pos["left"];//文字在整个图片距离左边的位置,也就是X轴的像素距离
$hang_size = $pos["hang_size"];// 这个是行高
$temp_string = "";
$secondCk = ""; //换号的标示,已换行true ,未换行false;
$font_file =$fontpath;//字体文件,在我的同级目录的Fonts文件夹下面
$tp = 0;
$font_color = imagecolorallocate($card, $pos["color"][0], $pos["color"][1], $pos["color"][2]);
for ($i = 0; $i < mb_strlen($str,'utf8'); $i++) {
$box = imagettfbbox($fontsize, 0, $font_file, $temp_string);
$_string_length = $box[2] - $box[0];
$temptext = mb_substr($str, $i, 1,'utf-8');//拆分字符串
$temp = imagettfbbox($fontsize, 0, $font_file, $temptext);//用来测量每个字的大小
if($secondCk){//如果换行,进入判断赋值
if(is_array($second)){//如果传入换行后参数,则使用.
$width = $second['width'];
$margin_lift = $second['left'];
}
}
if($second['maxline']){
//如果已经写入最大行数
if($nowHeight == $second['maxline']){
//获取原字符串长度
$strlong = mb_strlen($str,'utf8');
//抓取剩余字符串
$residueStr ='';
$residueStr .= mb_substr($str, $i, $strlong - $i,'utf-8');
$cc = $strlong - $i;
break;
}
}
if ($_string_length + $temp[2] - $temp[0] < $width) {
$temp_string .= mb_substr($str, $i, 1,'utf-8');
if ($i == mb_strlen($str,'utf8') - 1) {
$_str_h += $hang_size;
$tp++;//用来记录有多少行
$nowHeight++;//记录一共写入多少行
if ($iswrite) {//如果传入的参数是false,只做测量,不进行绘制输出
imagettftext($card, $fontsize, 0, $margin_lift, $_str_h, $font_color, $font_file, $temp_string);
}
}
} else {
$texts = mb_substr($str, $i, 1,'utf-8');
$isfuhao = preg_match("/[\\pP]/u", $texts) ? true : false;//用来判断最后一个字是不是符合,
if ($isfuhao) {//如果是符号,我们就不换行,把符合添加到最后一个位置去
$temp_string .= $texts;
} else {
$i--;
}
$_str_h += $hang_size;
$tp++;
$nowHeight++;//记录一共写入多少行
if($iswrite){
imagettftext($card, $fontsize, 0, $margin_lift, $_str_h, $font_color, $font_file, $temp_string);
}
$temp_string = "";
$secondCk = true;//作为是否已换行的标志
}
}
$strdata['tp'] = $tp ;
$strdata['residueStr'] = $residueStr ;
$strdata['nowHeight'] = $nowHeight ;
$strdata['height'] = $_str_h;
return $strdata;
}
做一个心中有料的人.
php生成图片表格自动换行_PHP GD库生成图片自动换行函数,自动分页函数相关推荐
- php生成图片表格自动换行_php文本转图片自动换行的方法代码
php文本转图片自动换行的方法代码 最近做了一个项目,把文字生成到图片上,发现长的文本会不换行,于是乎就研究一下PHP文本转图片的方式,其实只要是用到了PHP的扩展库,GD库来生成图片,再通过图像函数 ...
- PHP GD库 生成图片水印
* index.php <?php /*** Created by PhpStorm.* User: mingzhanghui* Date: 9/24/2019* Time: 12:47*/in ...
- ubuntu php5 gd库,Ubuntu下php使用GD库笔记
首先是查看GD库有没有被正确的安装和加载.通过gd_info()可以看,或者phpinfo.在phpinfo中可以看到gd一栏,然后版本如果是 bundled (2.0.34 compatible) ...
- php table生成图片,php不用GD库生成当前时间的PNG格式图象的程序
php不用GD库生成当前时间的PNG格式图象的程序 更新时间:2008年09月28日 14:40:24 作者: 该程序是不用GD库可以生成当前时间的PNG格式图象,给人大开眼界,很有参考价值. t ...
- PHP使用GD库绘制表格(可根据数据自适应)
ps:真是代码写的久了什么需求都会遇得上,木得办法 需求是需要用图片表格的样式展示数据,先看效果图: 就是一个表格,但是需要用图片的方式进行展示,再次感叹PHP的GD库真是异常强大!!! 先说完成的功 ...
- php imagettftext 中文,php的GD库imagettftext函数解决中文乱码问题,_PHP教程
php的GD库imagettftext函数解决中文乱码问题, 本文实例讲述了php的GD库imagettftext函数解决中文乱码问题的方法.分享给大家供大家参考.具体如下: 使用imagettfte ...
- centos php gd库,Centos 编译安装GD库
详细编译安装GD库整个过程,让php对更多图形方面gif jpg(jpeg) png wbmp xml 和 ttf字体 的支持. 我先启动CentOS5.3 Linux 可以说如果要配置一台LAMP服 ...
- Web前端技巧分享:教你用GD库生成验证码
验证码相信大家都不会陌生,在网站登录的时候经常会遇到.那么你知道这个验证码是如何实现的吗?下面小千就为大家介绍一下这个GD库,还有一些常见的图片水印也是用GD实现的哦! GD库是什么? GD库是php ...
- linux php gd库安装,Linux系统gd库安装步骤说明
gd库是PHP处理图形的扩展库,它提供了一系列用来处理图片的API(应用程序编程接口),使用gd库可以处理图片或者生成图片.在网站上,gd库通常用来生成缩略图,或者对图片加水印,或者生成汉字验证码,或 ...
最新文章
- 矩阵快速幂+构造方法
- ATS中开启Refer防盗链功能
- 大四学生对于股票的思考
- ssrs报表服务器数据库配置文件,创建报表服务器数据库(SSRS 配置管理器)
- Win10用Windows照片查看程序打开图片+更改注册表后导致Win10任务栏Adobe PDF阅读器图标显示异常
- kivy中文手册python_K-Meleon
- RESTful Web APIs设计风格
- Python100道经典练习题(附PDF)
- 中文版modbus测试软件,Modbus调试工具
- 「 Matlab 」矩阵运算讲解
- 公共DNS推荐及dns测速
- OSChina 周四乱弹 —— 月中发工资还没到家……
- 酷的计算机名字,微信网名最酷的名字
- Unity3D 材质球设置参数无效果的解决方法
- python中output使用_Python使用input() output()函数输入、输出数据记录
- github干货地址分享
- Ubuntu与开发板上的NFS安装与使用
- springboot项目中使用Echarts实现数据折现可视化
- 关于Windows Phone 7推广策略的失误
- 单招面试你为什么报考计算机专业,单招面试问题你为什么选择我们学校