如何在php gd库中更改imagefttext()的编码结果?

时间:2011-09-04 18:49:55

标签: php encoding arabic

我正在尝试更改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);

我能解决这个问题吗?
谢谢

2 个答案:

答案 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