Это проблема, с которой я столкнулся слишком много: imagettftext
- самая используемая функция GD для записи текста на изображение, но проблема заключается в том, что она не может отображать сложные символы юникода, так что, пока ваш язык не у нас есть сложные персонажи, мы хороши.
Для отображения сложных символов Юникода вам может понадобиться установка imagick
плюс pango
, установленный на вашем сервере. У большинства хостинг-провайдеров нет установленного pango, поэтому вы должны иметь выделенный сервер для вашего приложения.
большинство дистрибутивов поставляется с pango
предварительно установлены таким образом, если вам удалось установить imagick
на локальном Linux matchine
следующий код должен работать без каких-либо проблем
/* complex unicode string */
$text = "වෙබ් මත ඕනෑම තැනක";
$im = new \Imagick();
$background = new \ImagickPixel('none');
$im->setBackgroundColor($background);
$im->setPointSize(30);
$im->setGravity(\Imagick::GRAVITY_EAST);
$im->newPseudoImage(300, 200, "pango:" . $text);
$im->setImageFormat("png");
$image = imagecreatefromstring($im->getImageBlob());
//just for print out to the browser
ob_start();
imagepng($image);
$base64 = base64_encode(ob_get_clean());
$url = "data:image/png;base64,$base64";
echo "<img src='$url' />";
Позвольте мне знать, если вы обнаружите какие-либо трудности с код