Возможно ли использовать PHP GD imagecreatefromgif () и imagettftext () вместе? - PullRequest
0 голосов
/ 02 ноября 2009

По сути, я ищу способ написания динамического текста поверх 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);
}

Ответы [ 3 ]

2 голосов
/ 02 ноября 2009

Что если вы создадите новое изображение истинного цвета, импортируете в него gif-файл, добавите текст, а затем снова выведите результат в виде gif-файла - вам, возможно, повезет больше.

0 голосов
/ 02 ноября 2009

Вот что я в итоге сделал:

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);
}
0 голосов
/ 02 ноября 2009

Просто сохраните imagecreatefromgif в переменную, запустите imagettftext, а затем выведите изображение, используя заголовок типа содержимого. Посмотрите на аргументы и заполните аргумент $ image выходным сигналом из imagecreatefromgif.

...