Добавление текста с помощью GD Lib

Я рвал на себе волосы этим и перепробовал множество решений, но безрезультатно.

Я пытаюсь добавить текст к изображению, но все, что он делает, это показывает мое фоновое изображение, есть ли что-то явно очевидное, что я здесь делаю неправильно?

Спасибо заранее

<?
header('Content-Type: image/jpeg');

$fbid = $_POST['fbid'];
$background_img = $_POST['background'];
$message = $_POST['text'];
$ts = $_POST['ts'];

$filename = $fbid . "-" . $ts . ".jpg";

$image_canvas = imagecreatetruecolor(640,400);

$background = imagecreatefromjpeg($background_img);
$overlay    = imagecreatefrompng("../images/image-overlay.png");

imagecopyresampled($background, $overlay, 0, 0, 0, 0, imagesx($overlay), imagesy($overlay), imagesx($overlay), imagesy($overlay));

imagefilledrectangle($image_canvas, 0,0,150,30, $background);

$white = imagecolorallocate($background, 255, 255, 255);

imagettftext($image_canvas, 25, 0, 50, 50, $white, "arial.TTF", $message);

imagejpeg($background,"../created/" . $filename, 100);

imagedestroy($background);

2 ответа

Посмотри на это! Это работает, и ссылка на страницу ниже. Исходя из вашего исходного поста, я считаю, что это то, что вы ищете.

 /* first composite the canvas with the background */
 $background_img="../img/adfuba_october.png";
 $compositeString = "composite.png";

 list($width,$height) = getimagesize($background_img);
 $image_canvas = imagecreatetruecolor($width,$height);
 $background = imagecreatefrompng($background_img);
 imagecopyresampled($image_canvas,$background,0,0,0,0,$width,$height,$width,$height);

 /* now add the text */
 $fontPath = "path/to/your/fontFile/ARIAL.TTF";
 $fontSize = 24;
 $percent = 0.25;
 $txt_x = abs($width*$percent);
 $txt_y = abs($height*$percent);
 $color = "008844";
 $message = "This is User Text";
 imageTTFtext($image_canvas, $fontSize, 0, $txt_y, $txt_y, $color, $fontPath, $message);

 /* now generate the file */
 imagepng($image_canvas, $compositeString, 0) or die("error saving png");

 ?>
 <p>This is a composite image:<br><img src="<?php echo $compositeString;?>"></p>

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

Кроме того, холст является вашим фоновым объектом, а затем вы накладываете изображения или текст поверх холста.

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

Ты скучаешь по холсту. Начните сборку с imageCreateTrueColor.

$imageCanvas = imageCreateTrueColor($width, $height);
//your code
$background = imagecreatefromjpeg($background_img);
//more of your code
imagefilledrectangle($imageCanvas, 0, 0, 150, 30, $background);
//now do the same for the text only us imag
imagettftext($imageCanvas, 25, 0, 50, 50, $white, "arial.TTF", $message);

Ваше слияние jpeg и текстовых элементов в $imageCanvas.

Другие вопросы по тегам