我正在尝试创建一个带有水印文本的图像,并且我希望它位于图像的中心。我要加水印的文本可以是 5 个字符到 15 个字符之间的任意位置,因此我无法为文本设置最终大小以适合每个图像。
这是我用来创建水印图像的代码
function watermarkImage ($SourceFile, $WaterMarkText, $DestinationFile) {
list($width, $height) = getimagesize($SourceFile);
$image_p = imagecreatetruecolor($width, $height);
$image = imagecreatefromjpeg($SourceFile);
imagecopyresampled($image_p, $image, 0, 0, 0, 0, $width, $height, $width, $height);
$black = imagecolorallocate($image_p, 0, 0, 0);
$font = '../fonts/proxima-nova-light.otf';
$font_size = 100;
imagettftext($image_p, $font_size, 0, 303, 190, $black, $font, $WaterMarkText);
if ($DestinationFile<>'') {
imagejpeg ($image_p, $DestinationFile, 100);
} else {
header('Content-Type: image/jpeg');
imagejpeg($image_p, null, 100);
};
imagedestroy($image);
imagedestroy($image_p);
};
这在某些文本上做得很好,但是当我在较长的文本上尝试时,它看起来很糟糕。
我想 - 不知何故 - 计算文本的最佳大小并从那里选择大小、x 和 y。
有任何想法吗?