为文本背景PHP和GD绘制颜色

|| 我遇到了GD和PHP的另一个问题。 我已成功将文字写入图像。 但是,我遇到了这样一种情况:将文本(而不是直接放置在图像上)放置在矩形(或任何形状)上以为要放置图像的文本创建纯色背景是有益的放在上可能会使文字不易阅读。 我的两个想法是按优先顺序排列的: 在写文本时用颜色填充背景 将文本写入具有适当背景的适当大小的图像,然后将图像覆盖到目标上 我不知道该怎么做#1和#2似乎过于复杂,而且我不知道如何确定文本的尺寸,以便为它创建新的图像。 为了清楚起见,这不是很好的输出: 这就是我希望它的外观,在任何颜色的文本后面都有一个紧紧的框: 我愿意提出任何建议,但不加任何其他图像或黑点的情况下动态绘制颜色显然是我的首选。 更新: 在@Dan建议使用`imagettftext \'之后,我决定是时候该向我的库中添加对该函数的支持了。除了一个主要问题,一切都按预期进行。 即使写入纯色背景(0透明度),写入图像的文本仍然是透明的。 这是我编写的要测试的脚本:
<?php
    set_include_path(\'backbone:global:jquery\');

    require_once(\'Image.php\');

    $scout = new Image();
    $scout->source = \"scout.jpg\";

    $result = $scout->Write->Font(25, 25, \"A Fairly Long String\", 12, \"#FF0000\", 0, \"LiberationSans-Regular.ttf\", 1, \"#FFFF00\", .4, 4);

    if( !isset($_GET[\'dev\']) )
    {
        header(\"Content-Type: \" . $scout->contentType());
    }

    if( $result )
    {
        $scout->output();
    }
?>
我使用/需要的文件: 1.侦察员 2.解放字体 3.图像处理库     - 图片     -ImageBase     -ImageCombine     -ImageDraw     -ImageManipulate     -ImageWrite 我对所有文件表示歉意,它实际上仅使用
Image
ImageBase
ImageCombine
ImageWrite
,而其他文件则由加载程序
require_once
。 这是上面脚本的输出示例: 这是透明度为零(完全不透明)的输出:
$result = $scout->Write->Font(25, 25, \"A Fairly Long String\", 12, \"#FF0000\", 0, \"LiberationSans-Regular.ttf\", 1, \"#FFFF00\", 1, 4);
任何想法可能是什么原因造成的?这很可能是我的代码在某处,但似乎很奇怪,除了一个错误之外,它的工作方式完全符合我的想法。     
已邀请:
        在拼命寻找该问题的答案时,我偶然发现了与我的问题成切线关系的SO问题,其中包含答案。 我从来没有完全理解为什么要透明度时会告诉
imagealphablending
false
,所以我想我未能正确理解我正在使用的代码导致了此问题。 无论如何,以下修改后的代码在我的一个测试用例中就像一个魅力。 要将文本写到背景中而不会强制字符框具有100%的透明度,则必须在编写文本时将alpha混合功能打开:
imagealphablending($text->handle, true);
$bool = imagettftext($text->handle, $textSize, $angle, $padding, abs($size[5]) + $padding, $this->AllocateColor($rgba[0][\'r\'], $rgba[0][\'g\'], $rgba[0][\'b\'], $rgba[0][\'alpha\']), $font, $string);
imagealphablending($text->handle, false);
    
        如果您切换到ttf,也许这将为您完成工作。 http://php.net/manual/zh/function.imagettfbbox.php     

要回复问题请先登录注册