我尝试使用两种不同的字体动态创建图像,并通过循环并分别创建每个图像来完成基本工作。但是,创建的每个连续图像都会被循环的下一次传递覆盖。我期待它,但我不知道该怎么办,所以我需要添加什么?例如,使用两个字符串和两个字体,它只显示结果图像中的第二个字符串和字体。 $Strings
和$Fonts
都是数组。
function TextImage($Strings,$Fonts,$FontSize,$Angle) {
$FontPath = $_SERVER['DOCUMENT_ROOT'] . "/functions/truetype/";
if (is_array($Strings) === TRUE && is_array($Fonts) === TRUE) :
foreach (array_combine($Strings, $Fonts) AS $Strings => $Fonts) :
$Fonts = $FontPath.$Fonts.".ttf";
$TextDimensions = imagettfbbox($FontSize,$Angle,$Fonts,$Strings);
$Width = abs($TextDimensions[4] - $TextDimensions[0] + 5);
$Height = abs($TextDimensions[5] - $TextDimensions[1]) + 10;
$Image = imageCreateTransparent($Width,$Height);
$TextColor = imagecolorallocate($Image,255,204,153);
$ShadowColor = imagecolorallocate($Image,119,119,119);
$y_offset = abs($TextDimensions[5]);
$x_offset = ($Width / 2) - ((min($TextDimensions[2],$TextDimensions[4]) - max($TextDimensions[0],$TextDimensions[6])) / 2);
imagettftext($Image,$FontSize,$Angle,$x_offset,$y_offset,$TextColor,$Fonts,$Strings);
endforeach;
endif;
return imagepng($Image);
imagedestroy($Image);
}