我们可以在不同的语言的基础上使用多种字体来使用干预库创建叠加文本吗?



我正在使用干预库在图像上写入叠加文本。 如果提供的文本是一种语言(例如英语),则此方法非常完美

我需要根据给定的输入用多种语言编写叠加文本(输入可以是任何语言)。

这是我生成上述内容的代码库。

public static function generateTextOverImage($image, $text)
{
$img = Image::make($image->getContent());
$extension = 'jpg';
$centerX = 25;
$centerY = 210;
$text = str_replace('<br>', "n", html_entity_decode($message)) ;
$lines = explode("n", wordwrap($text, 21));
$currentLineVIndex = $centerY;
foreach ($lines as $line) {
$img->text($line, $centerX, $currentLineVIndex, function ($font) use ($fontSize) {
$font->file(public_path('fonts/LucidaGrande.ttf'));
$font->size(18);
$font->color('#fdf6e3');
});
}
$encoded = $img->encode($extension);
return $encoded;
}

由于文本可以是不同的语言(一次一种或多种语言)。图像上的预期文本已损坏。 它仅适用于英语。

任何帮助将不胜感激。谢谢

更新

有没有支持多种语言的字体?

我已经自己解决了。在这里发布我的解决方案,可能会帮助遇到类似问题的人。

解决方案是使用支持不同字体的Unicode字体(Arial Unicode MS)。

以下是解决方案

public static function generateTextOverImage($image, $text)
{
$img = Image::make($image->getContent());
$extension = 'jpg';
$centerX = 25;
$centerY = 210;
$text = str_replace('<br>', "n", html_entity_decode($message)) ;
$lines = explode("n", wordwrap($text, 21));
$currentLineVIndex = $centerY;
foreach ($lines as $line) {
$img->text($line, $centerX, $currentLineVIndex, function ($font) use ($fontSize) {
$font->file(public_path('fonts/arial-unicode-ms/arial-uni.ttf'));
$font->size(18);
$font->color('#fdf6e3');
});
}
$encoded = $img->encode($extension);
return $encoded;
}

最新更新