Kozack
@Kozack
Thinking about a11y

Как наложить текст на изображение?

Есть вот такой код.
Берём исходное изображение и текст из GET параметров
$img_path = $_GET['cover'];
$text = $_GET['name'];
$img = imagecreatefrompng($img_path);
$color = imageColorAllocate($img, 255, 255, 255);
imagettftext($img, 50, 0, 0, 0, $color, 'Arial', $text);
header("Content-type: image/png");
imagepng($img);
imagedestroy($img);

Но в результате выводится только исходное изображение без текста (во всяком случае его не видно.
Что я делаю не так?

UPD.
Данный пример с использованием imageString работает. Вот только не получается задать размер и шрифт текста.

UPD2.
PHPINFO
GD Support  enabled
GD Version 2.1.1-dev
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.5.2
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 8
PNG Support enabled
libPNG Version 1.2.50
WBMP Support enabled
XPM Support enabled
libXpm Version 30411
XBM Support enabled
WebP Support enabled
  • Вопрос задан
  • 2275 просмотров
Решения вопроса 1
@heartdevil
плыву как воздушный шарик
Привет.

Скорее всего проблема в параметре указания шрифта.

imagettftext($img, 50, 0, 0, 0, $color, 'Arial', $text);


Fontfile - это путь к используемому вами TrueType-шрифту.

Нужно подгрузить шрифт - arial.ttf
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
butteff
@butteff
Раз в тысячу лет заправляю свитер в носки
Для работы с изображениями можно использовать imagemagic. Описание работы и функции тут php.net/manual/ru/book.imagick.php

Этот метод позволяет наложить текст на картинку: php.net/manual/ru/imagickdraw.annotation.php

bool ImagickDraw::annotation ( float $x , float $y , string $text )
Ответ написан
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
imagettftext ( resource $image , float $size , float $angle , int $x , int $y , int $color , string $fontfile , string $text )


fontfile

Путь к файлу TrueType шрифта.

В зависимости от версии GD библиотеки если fontfile не начинается с /, то в конец названия файла будет добавлено расширение .ttf, и библиотека будет пытаться найти этот файл по адресу, определенному в настройках библиотеки.

При использовании GD библиотеки версий младше 2.0.18 символ space (пробел), как и точка с запятой, использовался в качестве 'разделителя путей' для различных файлов шрифтов. При использовании этой возможности будет выдаваться предупреждение: Warning: Could not find/open font. Решением такой проблемы в этих версиях может быть только исключение пробелов из путей файлов.


Arial - это не путь к шрифту.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы