Dionisij Опубликовано 9 июня, 2005 Жалоба Поделиться Опубликовано 9 июня, 2005 Проблема такая: Мне необходимо записать строку текста на изображение кириллицей. Если прписать эту строку кириллицей, то ничего хорошего из этого неполучится. Порылся по справочникам и нашел функцию imagepsencodefont (она загружает вектор кодировки). Синтаксис у неё такой: int imagepsencodefont (int font_index, string encodingfile) где font_index - файл со шрифтом, а encodingfile - файл с вектором кодировки. Подскажите плз, как указать путь к файлу encodingfile, или что с этим делать? Ссылка на комментарий Поделиться на другие сайты Поделиться
admin Опубликовано 9 июня, 2005 Жалоба Поделиться Опубликовано 9 июня, 2005 На http://php.rinet.ru/manual/ru/function.imagepsencodefont.php прочитал, что необходимо, чтобы php был скомпилирован с --enable-t1lib. У нас php собран по другому. По идее, даже при правильном написании кода, функция работать не будет. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dionisij Опубликовано 9 июня, 2005 Автор Жалоба Поделиться Опубликовано 9 июня, 2005 Спасибо за ответ. А как нибудь по дркгому кириллицу на картинку вывести можно? Или можно только нарисовать буквы (например в фотошопе), а затем их накладывать (дурацкая идея пришла мне в голову)? Ссылка на комментарий Поделиться на другие сайты Поделиться
admin Опубликовано 9 июня, 2005 Жалоба Поделиться Опубликовано 9 июня, 2005 Пример кода с 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); Проверил - работает, - отображает кириллицу. Ссылка на комментарий Поделиться на другие сайты Поделиться
Dionisij Опубликовано 9 июня, 2005 Автор Жалоба Поделиться Опубликовано 9 июня, 2005 Большое спасибо! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти