用PHP的imagettftext绘制图片的换行问题。

本文介绍了如何使用PHP的imagettftext函数在绘制图片时解决文字换行和行间距问题。作者面临一个需要动态生成包含文字的图片的任务,通过学习和实践,提出了一种算法,能根据文字内容自动换行并设置行间距,解决了单纯使用 换行导致的行间距过小的问题。此外,还提及了算法在处理标点符号出现在句首的情况。
摘要由CSDN通过智能技术生成

“简书”的文章链接:

  • 项目的一些说明:
    • 我们在做一个汉字的项目,在这个项目中我们需要使用ps不停的制作一种图片;
    • 而图片样式基本固定。每次制作都需要设计人员重复排版,不停调整图片和文字间隔和大小;
    • 这样的事如果做一两次还是可以忍受的,可是每天都为这个花费大量的时间,就太折磨人了;
    • 精通php的老板一看,觉得这个用php就可以解决,于是他就把这活交给了我,通过php自动生成一张样式统一的卡片,用来减轻设计小女孩的工作量,把她从不停的排版中解除出来(可是我一点不懂php啊,我是做Android的,没关系,不会我们可以学习嘛。哈哈~~);
    • 就这样这个任务落到了公司除老板意外唯一懂技术的我的肩膀上了;
    • 来让我们看看是什么样样子的一个卡片呢?
项目制作的卡片如下图:

乐萌汉字卡片

由图可以看出,整个大图由小的图片和文字组成。由于文字的多少是不确定的,每次的解释长短不一样,所以我们用程序画图的时候,要动态的根据文字的长短,个数,计算出文字占用的高度。

我们使用imagettftext这个函数把文字绘制在图片上,可是问来了,我们要解决换行问题,还要解决行间距的问题。如果我们单纯的插入\n作为换行符,会发现,行间距几乎为零,很难看。

下面我更加别人的一些算法,自己写了一个换行算法,并且可以设置行高同时,可以返回文字占用的高度。也想办法拍出来,标点符号出现在句首的问题。

上面的方法在有些博客中也提到了,是用来给图片制作水印的,可是也不是很好用。

下面附上“换行”和“计算高”的算法:
//下面函数方法我是这样调用的,这里是用来测量高度的。


     $temp = array("color" => array(99, 99, 99), "fontsize" =>27, "width" => 496, "left" => 100, "top" => 0, "hang_size" => 40);
    //这里我只用它做测量高度,把参数false改为true就是绘制了。
    $str_h=draw_txt_to($im, $temp, $str, false);



//----
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值