php - 如何使用 PHP GD 将文本写入不同尺寸的图像

标签 php gd image-manipulation

我正在创建不同尺寸的图像。如何在这些图像上写入文本以使文本始终适合图像?

$text = "some text as example";
$font = "arialbd.ttf"
$fontsize = 26;
offset_x = 0;
offset_y = 0;

$image01 = imagecreate( 1120 , 900 );
$image02 = imagecreate( 400 , 300 ); 
$image03 = imagecreate( 1120 , 900 );

我知道有 imagefttext 函数可以将文本应用于图像,但使用该函数我只能更改字体大小以使文本更大。我怎样才能知道它是否符合我的形象?

最佳答案

如果您希望缩放字体大小以使文本字符串填充图像宽度,请尝试此操作。 使用imagettfbbox,确定当前文本框宽度:

 $bbox = imagettfbbox($fontsize,0,$fontpath,$string);
 $tbwidth = $bbox[2];

然后将图像宽度除以 $tbwidth 以获得一个系数

 $factor = round(($imgwidth / $tbwidth), 0, PHP_ROUND_HALF_DOWN); //ie. 800/240=3

将 $factor 乘以 $fontsize 即可得到近似的增量。

 $newfontsize = $fontsize * $factor; //ie. 12(pt) * 3 = 36

请记住,如果您使用 GD 2.0,字体大小的单位是点而不是像素。您的算法将计算默认字体大小文本框(表示为文本框宽度)和图像宽度之间的差异。

关于php - 如何使用 PHP GD 将文本写入不同尺寸的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23267652/

相关文章:

php - 插入 php 时数据发生变化

php - 使用 PHP GD 的透明六边形蒙版拼贴

php - 使用 cURL 保存远程图像?

.net - 将自动裁剪的图像库

php - FILTER_FLAG_STRIP_LOW 与 FILTER_FLAG_STRIP_HIGH?

PHP MySQL 有没有办法从错误中获取列键

PHP 不向名称中包含 2 个点 ('.' ) 字符的电子邮件地址发送电子邮件

php - 上传 GIF 的安全方法

iphone - 以编程方式修剪(自动裁剪透明边界)objective-c/cocoa 中的图像

javascript - 如何在 Canvas 中实现反向径向倾斜移位效果