Перейти к содержанию
Форумы

Вопрос по T1lib


Рекомендуемые сообщения

Проблема такая:

 

Мне необходимо записать строку текста на изображение кириллицей. Если прписать эту строку кириллицей, то ничего хорошего из этого неполучится. Порылся по справочникам и нашел функцию imagepsencodefont (она загружает вектор кодировки). Синтаксис у неё такой:

 

int imagepsencodefont (int font_index, string encodingfile)

 

где font_index - файл со шрифтом, а encodingfile - файл с вектором кодировки.

 

Подскажите плз, как указать путь к файлу encodingfile, или что с этим делать?

Ссылка на комментарий
Поделиться на другие сайты

На http://php.rinet.ru/manual/ru/function.imagepsencodefont.php прочитал, что необходимо, чтобы php был скомпилирован с --enable-t1lib. У нас php собран по другому. По идее, даже при правильном написании кода, функция работать не будет.

Ссылка на комментарий
Поделиться на другие сайты

Спасибо за ответ. А как нибудь по дркгому кириллицу на картинку вывести можно? Или можно только нарисовать буквы (например в фотошопе), а затем их накладывать (дурацкая идея пришла мне в голову)?

Ссылка на комментарий
Поделиться на другие сайты

Пример кода с http://php5.ru/articles/image#text

 

// Преобразование Windows 1251 -> Unicode

  function win2uni($s)

  {

    $s = convert_cyr_string($s,'w','i'); // преобразование win1251 -> iso8859-5

    // преобразование iso8859-5 -> unicode:

    for ($result='', $i=0; $i<strlen($s); $i++) {

      $charcode = ord($s[$i]);

      $result .= ($charcode>175)?"".(1040+($charcode-176)).";":$s[$i];

    }

    return $result;

  }

 

  define('WIDTH', 200);

  define('HEIGHT', 60);

  define('FONT_NAME', 'arial.ttf'); // МЕСТОПОЛОЖЕНИЕ ШРИФТА !!!

  define('FONT_SIZE', 20);

 

  $image = imagecreatetruecolor(WIDTH,HEIGHT)

    or die('Cannot create image');

 

  // Не забываем преобразовать текст в кодировку Unicode

  $text = win2uni('Всем привет! :)');

 

  $coord = imagettfbbox(

     FONT_SIZE,  // размер шрифта

     0,          // угол наклона шрифта (0 = не наклоняем)

     FONT_NAME,  // имя шрифта, а если точнее, ttf-файла

     $text       // собственно, текст

     );

 

  /* Функция imagettfbbox возвращает нам массив из восьми элементов,

     содержащий всевозможные координаты минимального прямоугольника,

     в который можно вписать данный текст. Индексы массива

     удобно обозначить на схеме в виде координат (x,y):

 

     (6,7)           (4,5)

       +---------------+

       |Всем привет! :)|

       +---------------+

     (0,1)           (2,3)

 

     Число элементов массива может на первый взгляд показаться избыточным,

     но не следует забывать о возможности вывода текста под произвольным

     углом.

 

     По этой схеме легко вычислить ширину и высоту текста:

  */

  $width = $coord[2] - $coord[0];

  $height = $coord[1] - $coord[7];

 

  // Зная ширину и высоту изображения, располагаем текст по центру:

 

  $X = (WIDTH - $width) / 2;

  $Y = (HEIGHT + $height) / 2;

 

  imagettftext(

    $image,      // как всегда, идентификатор ресурса

    FONT_SIZE,   // размер шрифта

    0,           // угол наклона шрифта

    $X, $Y,      // координаты (x,y), соответствующие левому нижнему

                 // углу первого символа

    0xFFFFFF,    // цвет шрифта

    FONT_NAME,   // имя ttf-файла

    $text

  );

 

  header('Content-type: image/png');

  imagepng($image);

  imagedestroy($image);

Проверил - работает, - отображает кириллицу.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...