imagefttext() [функция.imagefttext]: не могу найти/открыть шрифт в
Я пытаюсь использовать библиотеку GD с FreeType писать какие-то тексты на мое изображение для приложения facebook(ниже код), но возникли ошибки:предупреждение: imagettftext() [функция.imagettftext]: не могу найти/открыть шрифт в /home/xxx/public_html/yyy/zzz/abc.php по строке 49
Технические характеристики:версия PHP 5.3.26 поддержки GD enabledGD версия в комплекте (2.1.0 совместимый)поддержкой FreeType enabledFreeType связь с freetypeFreeType версия 2.3.11
Я нашел что-то вроде ‘—с-программа FreeType-реж=/ЕГР тоже
В чем может быть проблема, что я получаю ошибку?Я должен включить только в файле php? (как)я должен знать полный путь к моему файлу шрифта?Как поступить? Заранее спасибо!Также что бы быть путь на Arial.ТФФ ?? или все шрифты?
© 2020 — Вопросы и ответы по программированию
imagefttext
(PHP 4 >= 4.0.7, PHP 5)
imagefttext — Write text to the image using fonts using FreeType 2
Описание
Список параметров
Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor() .
The font size to use in points.
The angle in degrees, with 0 degrees being left-to-right reading text. Higher values represent a counter-clockwise rotation. For example, a value of 90 would result in bottom-to-top reading text.
The coordinates given by x and y will define the basepoint of the first character (roughly the lower-left corner of the character). This is different from the imagestring() , where x and y define the upper-left corner of the first character. For example, «top left» is 0, 0.
The y-ordinate. This sets the position of the fonts baseline, not the very bottom of the character.
The index of the desired color for the text, see imagecolorexact() .
The path to the TrueType font you wish to use.
Depending on which version of the GD library PHP is using, when fontfile does not begin with a leading / then .ttf will be appended to the filename and the library will attempt to search for that filename along a library-defined font path.
When using versions of the GD library lower than 2.0.18, a space character, rather than a semicolon, was used as the ‘path separator’ for different font files. Unintentional use of this feature will result in the warning message: Warning: Could not find/open font. For these affected versions, the only solution is moving the font to a path which does not contain spaces.
In many cases where a font res >
// Set the enviroment variable for GD
putenv ( ‘GDFONTPATH=’ . realpath ( ‘.’ ));
// Name the font to be used (note the lack of the .ttf extension)
$font = ‘SomeFont’ ;
?>
Text to be inserted into image.
Key | Type | Meaning | linespacing | float | Defines drawing linespacing |
---|
Возвращаемые значения
This function returns an array defining the four points of the box, starting in the lower left and moving counter-clockwise:
lower left x-coordinate | |
1 | lower left y-coordinate |
2 | lower right x-coordinate |
3 | lower right y-coordinate |
4 | upper right x-coordinate |
5 | upper right y-coordinate |
6 | upper left x-coordinate |
7 | upper left y-coordinate |
Примеры
Пример #1 imagefttext() example
// Create a 300×100 image
$im = imagecreatetruecolor ( 300 , 100 );
$red = imagecolorallocate ( $im , 0xFF , 0x00 , 0x00 );
$black = imagecolorallocate ( $im , 0x00 , 0x00 , 0x00 );
// Make the background red
imagefilledrectangle ( $im , 0 , 0 , 299 , 99 , $red );
// Path to our ttf font file
$font_file = ‘./arial.ttf’ ;
// Draw the text ‘PHP Manual’ using font size 13
imagefttext ( $im , 13 , 0 , 105 , 55 , $black , $font_file , ‘PHP Manual’ );
// Output image to the browser
header ( ‘Content-Type: image/png’ );
imagepng ( $im );
imagedestroy ( $im );
?>
Примечания
Замечание: Эта функция нуждается в GD версии 2.0.1 или выше.
Замечание: Эта функция доступна только в случае, если PHP был скомплирован с поддержкой freetype ( —with-freetype-dir=DIR )
imagefttext() и imagettftext(), дающие странные результаты
У меня проблема с получением imagefttext() и imagettftext() работающих в php.
Это аналогичный вопрос для imagettftext(), который не работает, однако мне не дана ошибка. Я упрощу свой код здесь, чтобы показать, в чем заключается его основа. Я пробовал каждую строку ниже.
Все вышесказанное создает серию белых ящиков, где должно быть письмо. Для дальнейшего устранения неполадок я взял каждую строку выше и загрузил ее и попробовал. Затем я изменил «A» в имени файла шрифта на «a», и никто из них не сказал, что это сервер на основе Unix. (capments) Ниже я отправлю рабочий бит кода, который создает изображение с текстом.
Я знаю, что FreeType установлен на сервер, иначе он даже не дал бы мне изображение, бросая ошибку, когда я пытаюсь его использовать. Я не пробовал еще один способ установки файла шрифта, который в этом случае не нужен. (Он все равно читает файл, иначе это даст мне ошибку.)
UPDATE: теперь это разрешено благодаря Elias, у меня была небольшая часть кода из примерно 1500 строк кода, который был фрагментом старого кода. Этот код был imagealphablending($image2, false) и imagettftext() а также imagefttext() не работают с alphablending off (Set to false.) Я удалил код, и теперь он работает так, как ожидалось. См. Ниже, как это выглядит сейчас.
imagefttext
(PHP 4 >= 4.0.7, PHP 5, PHP 7)
imagefttext — Нанесение текста на изображение, используя шрифты FreeType 2
Описание
Список параметров
Ресурс изображения, полученный одной из функций создания изображений, например, такой как imagecreatetruecolor() .
Размер шрифта в пунктах.
Угол в градусах, 0 градусов означает расположение текста слева направо. Положительные значения означают поворот текста против часовой стрелки. Например, текст повернутый на 90 градусов нужно будет читать снизу вверх.
Координаты x и y определяют отправную точку для первого символа текста (конкретно, левый нижний угол символа). Здесь есть отличие от функции imagestring() , в которой x и y определяют верхний левый угол первого символа. Например, «верхний левый» имеет координаты 0,0.
y-координата. Это позиция базовой линии шрифта, в общем случае она не совпадает с низшей точкой в символе.
Индекс требуемого цвета текста, см. imagecolorexact() .
Путь к TrueType шрифту, который требуется использовать.
В зависимости от версии GD библиотеки если fontfile не начинается с /, то в конец названия файла будет добавлено расширение .ttf, и библиотека будет пытаться найти этот файл по адресу, определенному в настройках библиотеки.
При использовании GD библиотеки версий младше 2.0.18 символ space (пробел), как и точка с запятой, использовался в качестве «разделителя путей» для различных файлов шрифтов. При использовании этой возможности будет выдаваться предупреждение: Warning: Could not find/open font. Решением такой проблемы в этих версиях может быть только исключение пробелов из путей файлов.
В большинстве случаев размещение файлов шрифтов в директории скрипта решает подобные проблемы включения файлов.
// Задание переменной окружения для GD
putenv ( ‘GDFONTPATH=’ . realpath ( ‘.’ ));
// Имя шрифта для использования (обратите внимание на отсутствие расширения .ttf)
$font = ‘SomeFont’ ;
?>
Текст для вставки в изображение.
Ключ | Тип | Значение |
---|---|---|
linespacing | float | Определяет рисование нижнего подчеркивания |
Возвращаемые значения
Эта функция возвращает массив, определяющий четыре точки рамки текста. Текст внутри этих границ начинается с левого нижнего угла и поворачивается против часовой стрелки:
нижняя левая x-координата | |
1 | нижняя левая y-координата |
2 | нижняя правая x-координата |
3 | нижняя правая y-координата |
4 | верхняя правая x-координата |
5 | верхняя правая y-координата |
6 | верхняя левая x-координата |
7 | верхняя левая y-координата |
Примеры
Пример #1 Пример использования imagefttext()
// Создание изображения 300×100
$im = imagecreatetruecolor ( 300 , 100 );
$red = imagecolorallocate ( $im , 0xFF , 0x00 , 0x00 );
$black = imagecolorallocate ( $im , 0x00 , 0x00 , 0x00 );
// Сделаем красный фон
imagefilledrectangle ( $im , 0 , 0 , 299 , 99 , $red );
// Путь к ttf файлу шрифта
$font_file = ‘./arial.ttf’ ;
// Рисуем текст ‘PHP Manual’ шрифтом 13го размера
imagefttext ( $im , 13 , 0 , 105 , 55 , $black , $font_file , ‘PHP Manual’ );
// Вывод изображения
header ( ‘Content-Type: image/png’ );
imagepng ( $im );
imagedestroy ( $im );
?>
Примечания
Замечание: Эта функция доступна только в случае, если PHP был скомплирован с поддержкой freetype ( —with-freetype-dir=DIR )
Смотрите также
- imageftbbox() — Определение границ текста выводимого шрифтом freetype2
- imagettftext() — Рисование текста на изображении шрифтом TrueType
PHP imagefttext (imagettftext) не отображает ничего
Я почти уверен, что есть глупая причина, по которой это не работает, но я просто не могу понять этого. Я просто пытаюсь распечатать какой-то текст в виде графического изображения с imagettftext, но я не могу получить слова для отображения. Это на сервере GoDaddy, поэтому я не контролирую все, но вот спецификации из phpinfo():
- Версия PHP 5.2.14
- — with-gd » —with-freetype-dir =/usr » —with-jpeg-dir =/usr » —with-png-dir =/usr/bin/libpng-config » —enable-gd-native-ttf ‘
- Поддержка GD
- Версия GD в комплекте (совместим с 2.0.34)
- Поддержка FreeType включена
- FreeType Связь с freetype
- FreeType Version 2.2.1
Вот код, который я использую. Ничего необычного или странного.
Я попытался изменить имя шрифта разными способами:
Я пытался использовать PNG вместо GIF, я пытался использовать imagefttext() и imagettftext(), я пытался отображать ошибки, но он не показывает никаких ошибок, просто пустой экран. Есть идеи? Он должен быть чем-то таким глупым.
imagefttext
imagefttext — записывает текст на изображении с использованием шрифтов FreeType 2.
Описание
array imagefttext (resource image, int size, int angle, int x, int y, int col, string font_file, string text [, array extrainfo])
Предупреждение! |
---|