我正在尝试更改imagefttext()结果的编码
我的想法是用“阿拉伯语”语言将一些文本打印到指定的图像上,但结果显得很奇怪
形式。
我使用了这段代码,但它只能用英文字符串正确工作:
mb_internal_encoding('UTF-8');
$im =imagecreatefromjpeg('x.jpg');
$textcolor=imagecolorallocate($im, 0, 0, 255);
imagefttext($im, 18, 0, 10, 20,$textcolor,"Fonts/tahoma.ttf","مسعود أوزبل");
imagejpeg($im,"mozil.jpg",100);
imagedestroy($im);
我能解决这个问题吗?
谢谢
答案 0 :(得分:0)
在imagettftext手册的评论中,有RTL语言的示例。 Try this
$wordsArray = explode(" ", $text);
$rtlCompleteText='';
for ($i = sizeOf($wordsArray); $i > -1; $i = $i-1) {
//$lettersArray = explode("|", str_replace(";|", ";", $wordsArray[$i]));
$lettersArray = explode(";", $wordsArray[$i]);
$rtlWord='';
for ($k = sizeOf($lettersArray); $k > -1; $k = $k-1) {
if (strlen($lettersArray[$k]) > 1) { // make sure its full unicode letter
$rtlWord = $rtlWord."".$lettersArray[$k].";";
}
}
$rtlCompleteText = $rtlCompleteText." ".$rtlWord;
}
return $rtlCompleteText;
}
答案 1 :(得分:0)
阿拉伯字符不能视为数组。此外,imagefttext()
不支持RTL语言,例如开箱即用的阿拉伯语。你需要做的是扭转每个角色而不改变它的形状(字形/符号)。 @Lars答案不会起作用,因为阿拉伯语中的字母可能会根据其在单词中的位置而改变。请参阅此处获取类似的答案和解决方案:Error while writting Arabic to image