Я использую PHP 7.4
, и когда я пытаюсь написать текст на изображении с помощью функции imagettftext()
, ничего не происходит, только пустое изображение! когда я возвращаюсь к PHP 5.6
, он работает идеально.
Я подтвердил, что GD включен, и я работаю под ОС Windows.
Вот мой код (я скопировал его с php.net):
// 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 = 'arial.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);
Правда ли, что «функция imagettftext не определена в php 7.4»?
У меня код работает под w10 с php 7.4.2 и $font = "C:\\Windows\\Fonts\\arial.ttf";
Приведенный выше код отлично работает для меня также с правильным выбранным путем
@emix да, я читал эту заметку, но я использую виртуальный хостинг и у меня нет доступа для установки freetype.
@jspit я использую Windows 10 в качестве ОС и версию PHP 7.4.11.
В вашем коде не указан правильный путь к шрифту! Закомментируйте строку с заголовком, чтобы вы могли видеть сообщения об ошибках.
@jspit это было правильно, я должен был указать реальный путь к используемому шрифту .. это работает только в этом случае ~ большое спасибо
Я думаю, что шрифт должен быть проблемой здесь. Вы должны включить его с путем. Прочтите документацию по адресу php:imagettftext
В зависимости от того, какую версию библиотеки GD использует PHP, если файл шрифта не начинается с начального символа /, то к имени файла будет добавлен .ttf, и библиотека попытается найти это имя файла по заданному библиотекой пути к шрифту.
При использовании версий библиотеки GD ниже 2.0.18 в качестве «разделителя путей» для разных файлов шрифтов использовался пробел, а не точка с запятой. Непреднамеренное использование этой функции приведет к появлению предупреждающего сообщения: Предупреждение: Не удалось найти/открыть шрифт. Для этих уязвимых версий единственным решением является перемещение шрифта по пути, не содержащему пробелов.
Поэтому вы должны убедиться, где находится шрифт. Или попробуйте разные комбинации с ведущим «/» или без расширения файла.
Хорошо! когда я пытаюсь указать реальный путь используемого шрифта ... он работает :) большое спасибо @Alexander Klement
Вы читали документацию? «Примечание: эта функция доступна только в том случае, если PHP скомпилирован с поддержкой свободного типа».