Как я могу написать не английские символы, такие как арабские или персидские символы в изображение? - PullRequest
9 голосов
/ 15 сентября 2011

Как написать арабские или персидские символы на изображении, используя библиотеку PHP GD?

т.е. "احسان"

Ответы [ 4 ]

1 голос
/ 03 августа 2014

Используйте эту функцию для передачи текста в imagettftext

<?php
function revUni($text) {

    $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 голос
/ 10 сентября 2014

Простое изменение арабских символов как массив просто не будет работать .Вам необходимо учесть арабских глифов и заменить каждый точным символом Unicode.см. здесь для аналогичного вопроса и решения: Ошибка при записи арабского на изображение

0 голосов
/ 30 сентября 2015

Я написал пакет для композитора на основе библиотеки, я не помню названия.Я изменил библиотеку и исправил некоторые ошибки.

Вы можете найти источник здесь .и вы также можете установить его с помощью composer:изображения холста

Пожалуйста, протестируйте его и отправьте сообщения об ошибках, предложения и ...

Спасибо

0 голосов
/ 17 декабря 2012

Попробуйте использовать imagettftext.

<?php
// http://localhost/test.php?text=احسان

// test.php file

$font = 'C:/Windows/Fonts/Arial.ttf';
$text = $_GET['text'];

// [switch to right to left] 
// try comparing of using this block and not using this block
$rtl = array();
for($i=0; $i<strlen($text); $i+=2) {
    $rtl[] = substr($text, $i, 2);
}
$rtl = array_reverse($rtl);
$rtl = implode($rtl);
$text = $rtl;
// [/switch to right to left]

$im = imagecreatetruecolor(65, 35);
$black = imagecolorallocate($im, 0, 0, 0);  
$white = imagecolorallocate($im, 255, 255, 255);
imagefilledrectangle($im, 0, 0, 500, 100, $white);  
imagettftext($im, 12, 0, 10, 20, $black, $font, $text);  
header('Content-type: image/png');  

imagepng($im);  
imagedestroy($im); 
...