[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: функция написания текста поверх картинки
Visionary
сделал скрипт подписывающий картинку, подпись переменна...

По Английски картинка подписывается идеально...
по русски пишет чушь всякую...


скажите топросто функция
imagettftext($src_img, $height_front, $angle, 10, 444, $color, $front_file, $text)

не работает с русской кодировкой?
или что-то не так???

есть ли альтернативныйй способ?
пс:шрифт русский.



Спустя 48 минут, 9 секунд (25.01.2008 - 15:27) disc написал(а):
Код
<?php
header("Content-type: image/png");

$im = imagecreatetruecolor(400, 30);

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 399, 29, $white);

$text = 'Проверка...';

$font = 'arial.ttf';

imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

imagettftext($im, 20, 0, 10, 20, $black, $font, $text);

imagepng($im);
imagedestroy($im);
?>


И все хорошо работает, файл со шрифтом положи в папку со скриптом

Спустя 24 дня, 7 часов, 24 минуты, 37 секунд (20.02.2008 - 22:51) sergeiss написал(а):
У меня тоже ничего не выводилось по-русски, пока я не сделал перекодировщик русского текста. Как это описано в книге Вадима Дунаева "PHP". Я думаю, что он не будет в обиде на меня smile.gif, я выложу сюда текст предложенной им функции для решения проблемы перекодирования текста именно в этой ситуации.

Код
function str_rus( $str )
// преобразование русских букв в строке для вывода на картинку
{
$nstr=""; // итоговая строка
for( $i=0; $i<strlen( $str ) ; $i++)
{
$symbol=substr($str, $i, 1); // get symbol
$ascii=ord( $symbol ); // get ascii code of this symbol
if( $ascii < 128 )
{ $nstr .= $symbol; }
elseif( $ascii > 191 and $ascii < 256 )
{ $nstr .= "&#". (string)(848 + ord($symbol)).';'; }
else
{ $nstr .= $symbol; }
} // end of for( $i ) loop

return( $nstr );
} // end of function str_rus


Данный код используется очень легко и просто, вот так:

imagettftext( ......., str_rus("Этот текст будет хорошо читаться по-русски") ); // все параметры, кроме текста, я специально убрал, чтобы они не загромождали вид.

Спустя 26 дней, 10 часов, 32 минуты, 24 секунды (17.03.2008 - 09:24) LoneCat написал(а):
Перед тем как выводить что-то по-русски - нужно перекодировать это в уникод, для этого можно использовать функцию mb_convert_encoding(), ну или с помощью собственной подпрограммы как sergeiss.

Спустя 9 месяцев, 18 дней, 5 часов, 55 минут, 25 секунд (5.01.2009 - 15:19) uMnepaTop написал(а):
PHP
iconv('cp1251''UTF-8'$text);

Так куда проще мне кажется tongue.gif


_____________
Спасибо, за прочтение:)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.