Расположите текст поверх изображения, используя PHP GD Lib

Мне нужно разместить текст поверх изображения. Сначала я создаю текст так:

$text_box = imagecreatetruecolor($tw, $th);
$color = imagecolorallocate($text_box, 54, 54, 54);
imagefill($text_box, 0, 0, $color );

$shadow_color = imagecolorallocate($text_box, 0, 0, 0);
$text_color = imagecolorallocate($text_box, 255, 255, 255);
$blur_intensity = 1;

$text_box = $this->imagettftextblur($text_box, $size, $angle, $x+2, (($y+2)-5), $shadow_color, $fontfile, $text, $blur_intensity);
$text_box = $this->imagettftextblur($text_box, $size, $angle, $x, ($y-5), $text_color, $fontfile, $text);

Для получения дополнительной информации о imagettftextblur Проверь это Вот.

Это работает удовольствие. Затем я хочу разместить этот текст в середине изображения:

imagecopymerge($img, $text_box, 0, 0, 50, 0, imagesx($text_box), imagesy($text_box), 100);

Но это результат, который я в конечном итоге:

введите описание изображения здесь

Странная постановка src_x в imagecopymerge значение 50 дает смещение минус, вместо смещения на 50 пикселей слева. Плюс ко всему я получаю черный раздел в конце текста. Куда я здесь не так?

1

Решение

Координаты copymerge (), в основном, на английском языке, start copying at this x,y coordinate, then copy P pixels horizontally (imagesx()) and copy Q pixels vertically (imagesy()), Это означает, что если ваше текстовое поле имеет размер 100×200, вы будете копировать пиксели в (x=50,y=0) -> (x=150,y=200), Обратите внимание на то, что новые координаты завершения идут за концом исходного изображения.

Если это ваша оригинальная картинка в текстовом поле, и x это начальная координата x = 50, y = 0:

+--x-----------+
|              |
|              |
|              |
+--------------+

Тогда это то, что вы на самом деле копируете:

+--xxxxxxxxxxxxxxxxx
|  x            |  x
|  x            |  x
|  x            |  x
+--xxxxxxxxxxxxxxxxx

Обратите внимание, как в штучной упаковке x область прошла мимо правого края вашего исходного изображения. Вот почему вы получаете черный раздел. Вы сказали GD скопировать части вашего изображения, которые не существуют, поэтому он заполняет эту пустоту черным.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]