对于带有imagettftext和数组的循环

时间:2017-09-25 20:21:42

标签: php arrays image loops gd

尝试使用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 我希望结果是相同的图像,但用ąćęłńóśźż字符代替Ã。。

0 个答案:

没有答案