Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: GD библиотеки не принимают русский язык.
 
 автор: frisst   (24.04.2010 в 00:08)   письмо автору
 
 

Здравствуйте...
вот кусок кода:

<?php
include('config.php');
$id $_GET['ID'];
if(
$id == "") {die('Ошибка');}
$informer "SELECT * FROM informer WHERE id_user=$id";
$result mysql_query($informer) or die("Ошибка");
$row mysql_fetch_array($result);
if(
$row == "") {die('Ошибка');}
$name $row['name'];
$surname $row['surname'];

$informerImg ImageCreate(8831);
$background ImageColorAllocate($informerImg492550);
$text       ImageColorAllocate($informerImg2552550);
ImageString($informerImg000""$background);
ImageString($informerImg355$name$text);
ImageString($informerImg3515$surname$text);
header('Content-type:image/png');
ImagePNG($informerImg);
?>


латинский подгружает на картинку хорошо, а вот русский не понимает, и выводит в непонятной кодировке. Что мне дописать? Спасибо заранее...

  Ответить  
 
 автор: Лена   (24.04.2010 в 00:21)   письмо автору
 
   для: frisst   (24.04.2010 в 00:08)
 

Не дописать, а поменять.
Вместо ImageString() вам нужно использовать ImageTTFText().
Плюс положить на сервер файл нужного ttf-шрифта. Например, arial.ttf.
формат функции:
array imagefttext (resource image, int size, int angle, int x, int y, int col, string font_file, string text [, array extrainfo])

  Ответить  
 
 автор: serenya1983   (24.04.2010 в 00:25)   письмо автору
 
   для: frisst   (24.04.2010 в 00:08)
 

можно шрифт указать с кириллицей!

  $font     = 'font.ttf';//font.ttf - имя шрифта в текущей папке
      $font_size   = 12;
      $r = rand(0, 192);   $g = rand(0, 192);   $b = rand(0, 192);
      $color = imagecolorallocate($img, $r, $g, $b);
      imagettftext($img, $font_size, 0, $x, $y, $color, $font, "text");

  Ответить  
 
 автор: oliss   (24.04.2010 в 01:52)   письмо автору
181.1 Кб
 
   для: frisst   (24.04.2010 в 00:08)
 

<?
header
("Content-Type: image/png");
$text 'Здравствуйте...вот кусок кода:';
$f='arial.ttf';
$i=imagecreate(285,35);
$gi=imagecolorallocate($i,174,237,175 );
$b=imagecolorallocate($i,0,0,0);
imagefill($i,0,0,$gi);
imagettftext($i,20,0,10,20,$b,$f,iconv('','UTF-8',$text));
imagepng($i);
imagedestroy($i);   
  
imagettftext(
            
$image,      
            
FONT_SIZE// Размер шрифта   
            
0,         // 0 градусов
            
$X
            
$Y,      
            
0xFFFFFF,  // Белый фон   
            
FONT_NAME// Имя шрифта  
            
$text
  
);  

  Ответить  
 
 автор: frisst   (24.04.2010 в 11:40)   письмо автору
 
   для: oliss   (24.04.2010 в 01:52)
 

Спасибо вам всем за информацию, но скопировав полностью последний код (установив в папку сс скриптом arial.ttf)
теперь русские символы ни как не читаются. пустое место. но латиница по прежнему выводится.
может это зависит от версии библиотек? (я прост с библиотеки вчера только начал осваивать)

  Ответить  
 
 автор: Valick   (24.04.2010 в 13:01)   письмо автору
 
   для: frisst   (24.04.2010 в 11:40)
 

попробуйте так:

<?php 
//************************** 
// Функции 
//************************** 
// 
// Функция преобразует текст из кодировки iso8859-5 в Unicode-entities. 
// Ее необходимо вызывать перед запуском imageTtfText(), чтобы корректно  
// отображать русские буквы. Аргумент $from задает исходную кодировку 
// страницы (см. convert_cyr_string() для описания значений параметра). 
function toUnicodeEntities($text$from="w"
 {  
  
$text convert_cyr_string($text$from"i"); 
  
$uni "";  
  for (
$i=0$len=strlen($text); $i<$len$i++) 
   {  
    
$char $text{$i};  
    
$code ord($char);  
    
$uni .= ($code>175)? "&#" . (1040+($code-176)) . ";" $char;  
   }  
  return 
$uni;  
 } 


$file="img/1.jpg"
$size=getImageSize($file); 
$image=imageCreateFromString(file_get_contents($file)); 
$string toUnicodeEntities("Мой сайт http://mysite.ru"); 
$yellow imageColorallocate($image2552500); 
imageTtfText($image100$size[0]-17030$yellow"arial.ttf"$string); 
imageRectangle($image1010,$size[0]-10,$size[1]-10,$yellow);  

header("Content-type: image/jpeg"); 
imageJpeg($image'img/proba.jpg'); 

?> 
<img src=img/proba.jpg alt=Изображение <?php echo $size[3];?>

Эта функция описана в книге Д.Котерова (правда уже давно по меркам РНР), Trianon не в восторге и уже делал мне замечание по этому поводу, и вот я словно Малежик плыву на скромном плоту моих познаний РНР между Сциллой и Харибдой...

  Ответить  
 
 автор: frisst   (24.04.2010 в 14:11)   письмо автору
 
   для: Valick   (24.04.2010 в 13:01)
 

Спасибо всем огромное за советы.
Написал вот так:

<?php
include('config.php');
$id $_GET['ID'];
if(
$id == "") {die('Ошибка');}
$informer "SELECT * FROM informer WHERE id_user=$id";
$result mysql_query($informer) or die("Ошибка");
$row mysql_fetch_array($result);
if(
$row == "") {die('Ошибка');}
$name win_uni($row['name']);
$surname win_uni($row['surname']);

header ("Content-type: image/png");
$informerimg imagecreate(8831);
$font 'arial.ttf';
$background imagecolorallocate($informerimg492550);
$textcolor  imagecolorallocate($informerimg2552550);
imagestring($informerimg000""$background);
imagettftext($informerimg120512$textcolor$font$name);
imagettftext($informerimg120525$textcolor$font$surname);
imagepng($informerimg);
imagedestroy($informerimg);

function 
win_uni ($in) { 
$in convert_cyr_string($in ,"w","i"); 
$out ""
for (
$i=0$i strlen($in); $i++) { 
$char ord($in[$i]); 
$out .= ($char 175)?"&#".(1040+($char-176)).";":$in[$i]; }
return 
$out;

?>

работает отлично!

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования