imagettftext не отображает изображение

Я использую следующий код в test.php файл для генерации изображения из текста.

<?php
error_reporting(E_ALL);

// Set the content-type
header('Content-Type: image/png');

// Create the image
$im = imagecreatetruecolor(400, 30);

// Create some colors
$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

// The text to draw
$text = 'Testing...';
// Replace path by your own font path
$font = '/home/axxxxxxx/public_html/font.ttf';

// Add some shadow to the text
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

// Add the text
imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

// Using imagepng() results in clearer text compared with imagejpeg()
imagepng($im);
imagedestroy($im);

?>

Затем я пытаюсь отобразить изображение в test2.php следующее

<?php
echo "<img src=\"/test.php\" />";
?>

Все, что я получаю, это значок по умолчанию с битым изображением Путь к файлу шрифта и URL-адресу изображения верны. Все права доступа к файлу на 777. Серверы имеют библиотеку GD.

Что я могу делать не так?

3 ответа

Решение

Нашел ответ. Как предложил Данак, я сохранил файл как UTF-8 Without BOM используя блокнот ++. Затем просто начал правильно отображать изображение.

Это вызвано отсутствием шрифта. Пожалуйста, скопируйте файл шрифта в каталог test.php и измените код:

$font = '/home/axxxxxxx/public_html/font.ttf';

в

$font = 'font.ttf';

Надеюсь, поможет.

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

Вот что помогло мне увидеть немного текста:

imagettftext($im, 20, 0, 20, 20, $fg, $font, $text);

Это показывает немного текста в правом верхнем углу.

Полный рабочий код:

    putenv('GDFONTPATH=' . dirname(__FILE__));
    $font = 'arial'; // located next to the script
    imagettftext($im, 20, 0, 20, 20, $fg, $font, $text);
Другие вопросы по тегам