PHP5 - я хочу написать текст на хинди на картинке - PullRequest
3 голосов
/ 10 мая 2011

Я хочу написать текст на хинди (скажем, «पुलिसवाला आमिर खान») на изображении, используя PHP5.

Я использую

$im = @imagecreate(210, 50);
$background_color = imagecolorallocate($im, 255, 255, 255); 
$text_color = imagecolorallocate($im, 0, 0, 0); 
imagestring($im, 7, 15, 15, utf8_encode("पुलिसवाला आमिर खान..."), $text_color);
ImagePNG($im, 'a.png'); 
imagedestroy($im);

Ответы [ 3 ]

3 голосов
/ 10 мая 2011

Используйте функцию imagettftext и шрифт хинди.
Путь к шрифту должен быть абсолютным (используйте realpath или просто напишите абсолютный путь).

2 голосов
/ 10 мая 2011

Вам определенно понадобится решение, которое работает со шрифтом Truetype, imagestring() его не обрежет.

  1. Получите шрифт TTF, содержащий символы хинди, которые вы можете использовать

  2. , чтобы избавиться от utf8_encode(), просто убедитесь, что файлв кодировке UTF8

  3. использовать imagefttext() вместо imagestring()

1 голос
/ 10 мая 2011

Вы можете использовать imagettftext() для записи текста на изображения, если ваш хост поддерживает GD2 и FreeType (как это делают большинство серверов). Вы можете найти его подробный синтаксис и комментарии здесь:

http://php.net/manual/en/function.imagettftext.php

Найдите шрифт (* .ttf или * .otf), который поддерживает символы хинди. Поместите файл шрифта в ту же директорию, что и ваш скрипт, а затем попробуйте этот код, заменив «yourhindifont.ttf» на собственное имя шрифта:

    <?php

    // your string, preferably read from a source elsewhere
    $utf8str = "पुलिसवाला आमिर खान";

    // buffer output in case there are errors
    ob_start();

    // create blank image
    $im = imagecreatetruecolor(400,40);
    $white = imagecolorallocate($im,255,255,255);
    imagefilledrectangle($im,0,0,imagesx($im),imagesy($im),$white);

    // write the text to image
    $font = "yourhindifont.ttf";
    $color = imagecolorallocatealpha($im, 50, 50, 50, 0); // dark gray
    $size = 20;
    $angle = 0;
    $x = 5;
    $y = imagesy($im) - 5;
    imagettftext($im, $size, $angle, $x, $y , $color, $font, $utf8str);

    // display the image, if no errors
    $err = ob_get_clean();
    if( !$err ) {
        header("Content-type: image/png");
        imagepng($im);
    } else {
        header("Content-type: text/html;charset=utf-8");
        echo $err;
    }

    ?>

Если вы планируете вводить хинди непосредственно в ваш источник, обязательно установите кодировку документа вашего источника на UTF-8 (без спецификации) в вашем редакторе заранее. В противном случае строка не будет сохранена должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...