在Foreach循环中结合多个Truetype图像

时间:2015-07-30 23:56:36

标签: php image gd true-type-fonts

我尝试使用两种不同的字体动态创建图像,并通过循环并分别创建每个图像来完成基本工作。但是,创建的每个连续图像都会被循环的下一次传递覆盖。我期待它,但我不知道该怎么办,所以我需要添加什么?例如,使用两个字符串和两个字体,它只显示结果图像中的第二个字符串和字体。 $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);

}

0 个答案:

没有答案