Могу ли я использовать imagettftext более двух раз на изображение? - PullRequest
0 голосов
/ 04 февраля 2012

Я много гуглил и не мог найти ответ, есть ли какое-то ограничение для imagettftext () в PHP GD Library?Я назвал это три раза на одном и том же изображении, но третье, кажется, не появляется.Как я могу «нарисовать» три imagettftext () на одном изображении?

Заранее спасибо!

Вот код: я использую эту функцию для создания границы:

function imagettfstroketext(&$image, $size, $angle, $x, $y, &$textcolor, &$strokecolor, $fontfile, $text, $px){
    for($c1 = ($x-abs($px)); $c1 <= ($x+abs($px)); $c1++){
        for($c2 = ($y-abs($px)); $c2 <= ($y+abs($px)); $c2++){
            $bg = imagettftext($image, $size, $angle, $c1, $c2, $strokecolor, $fontfile, $text);
        }
    }
    return imagettftext($image, $size, $angle, $x, $y, $textcolor, $fontfile, $text);
}

Затем я устанавливаю переменные из формы HTML:

$text = strip_tags(htmlspecialchars_decode(stripslashes($_GET['text'])));
$text = str_replace('&gt;', '>', $text);
$text = str_replace('&lt;', '<', $text);
$text = str_replace('&quot;', '"', $text);
$text = str_replace('and_sign', '&', $text);

$text2 = strip_tags(htmlspecialchars_decode(stripslashes($_GET['text2'])));
$text2 = str_replace('&gt;', '>', $text2);
$text2 = str_replace('&lt;', '<', $text2);
$text2 = str_replace('&quot;', '"', $text2);
$text2 = str_replace('and_sign', '&', $text2);

$text3 = strip_tags(htmlspecialchars_decode(stripslashes($_GET['text3'])));
$text3 = str_replace('&gt;', '>', $text3);
$text3 = str_replace('&lt;', '<', $text3);
$text3 = str_replace('&quot;', '"', $text3);
$text3 = str_replace('and_sign', '&', $text3);

Больше переменных:

$image = imagecreatefrompng('images/'.$base.'.png');
$size = '12';
$angle = '0';
$font = 'font/' . strip_tags($_GET['font']) . '.ttf';
if (!$_GET['font']) $font = 'font/visitor2.ttf';

И затем я использую функцию для рисования текста:

imagettfstroketext($image, $size, $angle, 4, 12, $text_colour, $text_outline, $font, $text, 1);
imagettfstroketext($image, $size, $angle, 10, 20, $text_colour, $text_outline, $font, $text2, 1);
imagettfstroketext($image, $size, $angle, 4, 30, $text_colour, $text_outline, $font, $text3, 1);

1 Ответ

0 голосов
/ 04 февраля 2012

Нет ограничений на функцию, вы можете использовать ее сколько угодно на любом изображении.Возможно, вы просто пытаетесь писать за пределами изображения с неправильными координатами, или цвет текста совпадает с цветом фона, поэтому вы не можете его видеть.переменные, используемые функцией, когда она не работает, чтобы увидеть, все ли правильно.

...