Добавление текста с помощью 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.