我需要通过php创建一个带有可变文本的图像。 图像具有固定的宽度和可变的高度,因为有时候我有一个非常短的文本,有时候是一个非常长的文本。
当我创建图像时,imagecreate函数需要精确的尺寸,这是一个问题,因为我的文本是可变的。有没有快速的解决方法?
由于
答案 0 :(得分:2)
在创建图像之前,使用imagettfbbox获取文本的高度和宽度。
答案 1 :(得分:0)
这是代码:
<?
header("Content-Type: image/png");
if(!isset($_GET['size'])) $_GET['size'] = 44;
if(!isset($_GET['text'])) $_GET['text'] = "Hello, world!";
$font_type="./fonts/Arial.ttf";
//word wrap
$_GET['text'] = wordwrap($_GET['text'], 30, "\n");
$size = imagettfbbox($_GET['size'], 0, $font_type, $_GET['text']);
$xsize = abs($size[0]) + abs($size[2])+20;
$ysize = abs($size[5]) + abs($size[1])+20;
$image = imagecreate($xsize, $ysize);
$blue = imagecolorallocate($image, 0, 0, 255);
$white = imagecolorallocate($image, 255,255,255);
imagettftext($image, $_GET['size'], 0, abs($size[0])+5, abs($size[5])+5, $white, $font_type, $_GET['text']);
imagepng($image);
imagedestroy($image);
?>