php 用gd库在图片上写文字,并处理文字糊模问题

今天有个需求,用php在一张图片上写文字。

这个不是挺简单的嘛?我在一个test.php文件上,敲出6行代码,搞定

img=imagecreatefrompng("C:\Users\Administrator\Desktop\a.png");
$font='./static/img/SourceHanSansCN-Light.otf';
$black = imagecolorallocate($img, 0, 0, 0);
imagettftext($img,12,0,10,20,$black,$font,"test text");
imagepng($img);
//关闭流
ImageDestroy ($img);

但放在浏览器一跑,爆出 imagettftext(): Could not find/open font。

我反复看了路径,没错呀。后来去百度了下,说读取字体文件,必须是绝对路径。

路径方面,要用 realpath()转换下

$heiti=realpath('static/img/mp/font/heiti/SourceHanSansCN-Light.otf');

本想以为可以了。

后面发现写在图片上的文字,非常模糊。于是又去找了下gd库,有没调整分辨率的办法。

PHP: GD 和图像处理 函数 - Manual

 没有!

只能自己去百度了。百度上,解决方案也不多,就找到一个,它是图片上加图片,解决图片边缘锯齿。

它的方案是:图片一个图层,加上的图片一个图层,然后合成一张新图。

那好,我也采用此方法试试。

1.先建文字图层

 2.再把文字图层与图片图层,合在一起。

 程序一跑,还不错,清淅度基本满足。

最后,有gd库处理图片需要注意两点:

1.读取字体要用绝对路径。

2.图片要是糊模,请采用多图层合并。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值