|
|
|
| Здравствуйте...
вот кусок кода:
<?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(88, 31);
$background = ImageColorAllocate($informerImg, 49, 255, 0);
$text = ImageColorAllocate($informerImg, 255, 255, 0);
ImageString($informerImg, 0, 0, 0, "", $background);
ImageString($informerImg, 3, 5, 5, $name, $text);
ImageString($informerImg, 3, 5, 15, $surname, $text);
header('Content-type:image/png');
ImagePNG($informerImg);
?>
|
латинский подгружает на картинку хорошо, а вот русский не понимает, и выводит в непонятной кодировке. Что мне дописать? Спасибо заранее... | |
|
|
|
|
|
|
|
для: 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]) | |
|
|
|
|
|
|
|
для: 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");
|
| |
|
|
|
|
 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
);
|
| |
|
|
|
|
|
|
|
для: oliss
(24.04.2010 в 01:52)
| | Спасибо вам всем за информацию, но скопировав полностью последний код (установив в папку сс скриптом arial.ttf)
теперь русские символы ни как не читаются. пустое место. но латиница по прежнему выводится.
может это зависит от версии библиотек? (я прост с библиотеки вчера только начал осваивать) | |
|
|
|
|
|
|
|
для: 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($image, 255, 250, 0);
imageTtfText($image, 10, 0, $size[0]-170, 30, $yellow, "arial.ttf", $string);
imageRectangle($image, 10, 10,$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 не в восторге и уже делал мне замечание по этому поводу, и вот я словно Малежик плыву на скромном плоту моих познаний РНР между Сциллой и Харибдой... | |
|
|
|
|
|
|
|
для: 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(88, 31);
$font = 'arial.ttf';
$background = imagecolorallocate($informerimg, 49, 255, 0);
$textcolor = imagecolorallocate($informerimg, 255, 255, 0);
imagestring($informerimg, 0, 0, 0, "", $background);
imagettftext($informerimg, 12, 0, 5, 12, $textcolor, $font, $name);
imagettftext($informerimg, 12, 0, 5, 25, $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;
}
?>
|
работает отлично! | |
|
|
|
|