我遇到了GD和PHP的另一个问题。为文本背景绘制颜色PHP和GD
我已成功将文字写入图像。
但是,我遇到过将矩形(或任何形状)上的文本(而不是直接放置在图像上)放置在文本上以便为其放置图像的文本创建纯色背景可能不会让文本很容易被读取。
我的两个想法,按优先顺序排列:
- 装满颜色的背景,因为它写入文本
- 写的文字合适大小的图像有坚实的背景,然后覆盖图像到目标
我无法弄清楚如何做到#1和#2似乎过于复杂和我不知道如何来确定文本的尺寸,这样我可以创造一个新的形象。
为了清楚起见,这里是输出不是很好:
这里就是我想它的样子,与任何颜色的文字后面的密封箱:
我接受任何建议,但借鉴了飞彩无任何其他图像或hackiness显然是我的第一选择。
更新:
使用`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. scout
2. liberation font
3的图像处理库
- Image
- 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);
任何想法可能导致这种情况?这是我的代码极其可能的地方,但看起来很奇怪,它会像我认为的那样工作,除了这个bug之外。
你用什么函数写的文字你的形象?是使用ttf的一个选项? – Dan 2011-06-14 20:54:25
@丹它肯定是一个选项,虽然只是简单地设置了一些东西,但我一直在使用默认的[imagestring](http://www.php.net/manual/en/function.imagestring.php)和[ imagestringup](http://www.php.net/manual/en/function.imagestringup.php)。 **编辑**的方式,我使用[这个库](https://github.com/rockerest/myframework/blob/master/backbone/ImageWrite.php),我写了。 – rockerest 2011-06-14 20:56:37