尝试使用PHP的GD库创建一个简单的文本图像生成器时遇到问题。
在我的表单页面中,我发送的变量以';'分隔到一个数组。然后在我的图像生成页面上,我想在新创建的图像上分别显示数组中的变量,它们之间的空间为15像素。
在我的FOR循环中,PHP函数应分别计算每个变量的显示宽度和最终图像的总宽度,以便创建它。
我尝试了以下代码,但它不起作用。我已经检查了语法,所有似乎都是O.K.
这是我的代码
$code = $_POST['chars'];
$size = 20;
$marge = 15;
$font = '../keyboard/NotoSans-Regular.ttf';
$text_colour = imagecolorallocate($img, 255, 255, 255);
$chars_list = trim($_POST['chars']);
$chars_array = explode(';', $chars_list);
$count = count($chars_array);
for($i = 0; $i < $count;++$i)
{
$box = imagettfbbox($size, 0, $font, $chars_array[$i]);
$largeur = $box[2] - $box[0];
$largeur_lettre = round($largeur/$count);
$hauteur = 50;
$img = imagecreate($largeur+$marge, $hauteur);
$l = $chars_array[$i];
$angle = 0;
imagettftext($img,$size,$angle,($i*$largeur_lettre)+$marge, $hauteur, $text_colour, $font, $l);
}
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
我试过在我的表格中输入以下值:“ą;ć;ę;ł;ñ;ó;ś;ź;ż;Ą;Ć;Ę;Ł;Ń;Ó;Ś;Ź;Ż “
提前感谢您的回答。
修改
图像生成功能不起作用。我只得到一个没有任何东西的黑页。我期待一张带有白色背景和上面字母的图片。
编辑2
我改进了代码,得到了更好的结果。此代码生成一个图像,其中有许多字符,如é而不是ąćęłńóśźż。
我认为问题出在我的“for”循环中。
因此,我希望使用“ąćęłńóśźż”而不是类似字符的图像。 这是我改进的代码
$mot = utf8_encode('ąćęłńóśźż');
$size = 20;
$marge = 15;
$font = '../keyboard/NotoSans-Regular.ttf';
$box = imagettfbbox($size, 0, $font, $mot);
$largeur = $box[2] - $box[0];
$hauteur = $box[1] - $box[7];
$largeur_lettre = round($largeur/strlen($mot));
$img = imagecreate($largeur+$marge, $hauteur+$marge);
$blanc = imagecolorallocate($img, 255, 255, 255);
$noir = imagecolorallocate($img, 0, 0, 0);
for($i = 0; $i < strlen($mot);++$i)
{
$l = $mot[$i];
$angle = mt_rand(-35,35);
imagettftext($img,$size,$angle,($i*$largeur_lettre)+$marge,
$hauteur+mt_rand(0,$marge/2),$noir, $font, $l);
}
header("Cache-Control: no-cache, must-revalidate");
header('Content-type: image/png');
imagepng($img);
imagedestroy($img);
这是我得到的结果 this result 我希望结果是相同的图像,但用ąćęłńóśźż字符代替Ã。。