是否可以在不同语言的基础上使用多种字体,使用干预库创建叠加文本?
Can we use multiple fonts on the basis of different language to create overlay text using intervention library?
我正在使用 Intervention 库在图像上写入叠加文本。
如果提供的文本是一种语言(比如英语),这就完美了
我需要根据给定的输入(输入可以是任何语言)以多种语言编写叠加文本。
这是我生成上述内容的代码库。
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;
}
我正在使用 Intervention 库在图像上写入叠加文本。 如果提供的文本是一种语言(比如英语),这就完美了
我需要根据给定的输入(输入可以是任何语言)以多种语言编写叠加文本。
这是我生成上述内容的代码库。
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;
}