我正在使用Andrew G. Johnson的imagettftextblur()并且它很棒但是如何添加从文本颜色混合到黑色背景的阴影或者如何动态地对透明图像上的任何背景颜色进行操作?如果我将阴影设置为黑色它会消失,而将其设置为较浅的颜色看起来像一个blob。在白色背景下,它看起来很棒但不是黑色或其他深色。
我正在使用的代码如下,并调用几个自定义函数,包括imagettftextblur(),但其他函数与问题无关。我尝试发布样本图片但无法发布。
function textimage($ Strings,$ Fonts,$ FontSize,$ Angle,$ EnableShadow,$ CenterAlign){
$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]);
if ($EnableShadow === TRUE):
if ($CenterAlign === TRUE):
$x_offset = CenterText($FontSize,$Fonts,$Strings,$Width);
else:
$x_offset = ($Width / 2) - ((min($TextDimensions[2],$TextDimensions[4]) - max($TextDimensions[0],$TextDimensions[6])) / 2);
endif;
imagettftextblur($Image,$FontSize,$Angle,$x_offset+5,$y_offset+5,$ShadowColor,$Fonts,$Strings,10);
imagettftextblur($Image,$FontSize,$Angle,$x_offset,$y_offset,$TextColor,$Fonts,$Strings);
else:
if ($CenterAlign === TRUE):
$x_offset = CenterText($FontSize,$Fonts,$Strings,$Width);
else:
$x_offset = ($Width / 2) - ((min($TextDimensions[2],$TextDimensions[4]) - max($TextDimensions[0],$TextDimensions[6])) / 2);
endif;
imagettftext($Image,$FontSize,$Angle,$x_offset,$y_offset,$TextColor,$Fonts,$Strings);
endif;
endforeach;
endif;
return imagepng($Image);
imagedestroy($Image);
}
我使用单独的脚本调用它:
标题('Content-Type:image / png');
需要( “logo_functions.php”);
$Strings = array("Packard ","/ IMPERIAL page");
$Fonts = array("racew17","timesbd");
$Size = 20;
$Angle = 0;
$Shadow = TRUE;
$CenterAlign = TRUE;
echo textimage($ Strings,$ Fonts,$ Size,$ Angle,$ Shadow,$ CenterAlign);