我正在创建不同尺寸的图像。如何在这些图像上写入文本以使文本始终适合图像?
$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/