基本上我正在寻找一种在GIF上编写动态文本的方法[最好是通过PHP GD。]但我似乎无法让这两个函数发挥得很好。
供参考:imagecreatefromgif& imagettftext
function load_gif($imgname)
{
$im = @imagecreatefromgif($imgname);
if(!$im)
{
$im = imagecreatetruecolor(150,30);
$bgc = imagecolorallocate($im,255,255,255);
$tc = imagecolorallocate($im,0,0,0);
imagefilledrectangle($im,0,0,150,30,$bgc);
imagestring($im,1,5,5,'Error loading ' . $imgname,$tc);
}
return $im;
}
if ($_GET['color'] == 'red')
{
header('Content-Type:image/gif');
//$img = imagecreatetruecolor(51,32); // THIS IS NEEDED FOR TEXT TO SHOW
$img = load_gif('map-bubble-' . $_GET['color'] . '.gif');
$black = imagecolorallocate($img,0,0,0);
$white = imagecolorallocate($img,255,255,255);
imagefilledrectangle($img,0,0,51,32,$black);
imagettftext($img,14,0,0,0,$white,'../arial.ttf','test');
imagegif($img);
imagedestroy($img);
}
答案 0 :(得分:2)
如果你创建一个新的truecolour图像,将gif导入到该图像中,添加文本,然后再将结果作为gif输出,那么你可能会有更多的运气。
答案 1 :(得分:0)
只需将imagecreatefromgif存储到变量中,运行imagettftext,然后使用内容类型标头输出图像。看看参数,并用imagecreatefromgif中的outptu填充$ image参数。
答案 2 :(得分:0)
这是我最终做的事情:
if ($_GET['color'] == 'red' && strlen($_GET['number']) > 0 && is_numeric($_GET['number']))
{
$image = imagecreatefromgif('map-bubble-' . $_GET['color'] . '.gif');
$image_width = imagesx($image);
$text_size = @imagettfbbox(10,0,'../arial.ttf','$' . $_GET['number']);
$text_width = abs($text_size[2]-$text_size[0]);
imagettftext($image,10,0,($image_width / 2) - ($text_width / 2),17,imagecolorallocate($image,255,255,255),'../arial.ttf','$' . $_GET['number']);
header('Content-type:image/gif');
imagegif($image);
imagedestroy($image);
}