|
|
|
| Здравствуйте.
Скрипт накладывает на изображение текст, выше методом пост принимается переменная с русскими символами, при наложении на картинку получаются краказябры, как можно изменить кодировку этой переменной? | |
|
|
|
|
|
|
|
для: Den*s
(27.07.2011 в 11:26)
| | Функция iconv осуществляет преобразование кодировок. | |
|
|
|
|
|
|
|
для: Axxil
(27.07.2011 в 11:31)
| | Один из многих вариантов который я пробовал
<?
$sum = imagettftext($src_img, $height_font, $angle, 105, 168, $color, $font_file, iconv("KOI8-U", "UTF-8", $sum_prop));
?>
|
Нужно как то определить, получается, из какой кодировки преобразовывать | |
|
|
|
|
|
|
|
для: Den*s
(27.07.2011 в 11:38)
| | Не сталкивался с подобной проблемой, но быть может поможет такой вариант?
<?php
iconv (mb_detect_encoding ($sum_prop), 'UTF-8', $sum_prop);
?>
|
| |
|
|
|
|
|
|
|
для: MHz
(27.07.2011 в 12:14)
| | К сожалению не помогло :(
Теперь надписи нет вообще никакой | |
|
|
|
|
|
|
|
для: Den*s
(27.07.2011 в 12:24)
| | подсмотрел у Котерова несколько лет назад, вроде помогало :)
// Функция преобразует текст из кодировки 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;
}
|
| |
|
|
|
|
|
|
|
для: Den*s
(27.07.2011 в 11:26)
| | А в шрифте русские символы-то есть? | |
|
|
|
|
|
|
|
для: Киналь
(27.07.2011 в 13:33)
| | >А в шрифте русские символы-то есть?
Да, использую Times New Roman
Может я в коде что то не правильно делаю, но пока все попытки неудачны
<?
$nom_poruch = @/*intval*/($_POST["nom_poruch"]);
$sum_prop = @trim( htmlspecialchars ($_POST["sum_prop"], ENT_QUOTES));
$inn = @/*intval*/($_POST["inn"]);
$kpp = @/*intval*/($_POST["kpp"]);
$plateljik = @trim( htmlspecialchars ($_POST["plateljik"], ENT_QUOTES));
$bank = @trim( htmlspecialchars ($_POST["bank"], ENT_QUOTES));
$schet1 = @/*intval*/($_POST["schet1"]);
$bik = @/*intval*/($_POST["bik"]);
$schet2 = @/*intval*/($_POST["schet2"]);
$filename = "images/img.jpg";
$size_img = getimagesize($filename);
if ($size_img[2] == 2) $src_img = imagecreatefromjpeg($filename);
else if ($size_img[2] == 1) $src_img = imagecreatefromgif($filename);
else if ($size_img[2] == 3) $src_img = imagecreatefrompng($filename);
$color = imagecolorallocatealpha($src_img, 0, 0, 0, 0);
$height_font = 12;
$angle = 0;
$font_file = "images/times.ttf";
//запись текста на изображение
toUnicodeEntities($sum_prop);
$nom = imagettftext($src_img, $height_font, $angle, 270, 89, $color, $font_file, $nom_poruch);
$dat = imagettftext($src_img, $height_font, $angle, 400, 89, $color, $font_file, date("d.m.Y", time()) );
$sum = imagettftext($src_img, $height_font, $angle, 105, 168, $color, $font_file, $sum_prop);
$inn1 = imagettftext($src_img, $height_font, $angle, 63, 187, $color, $font_file, $inn);
$kpp1 = imagettftext($src_img, $height_font, $angle, 252, 187, $color, $font_file, $kpp);
$sun_cif = imagettftext($src_img, $height_font, $angle, 470, 187, $color, $font_file, "500-00");
$sch1 = imagettftext($src_img, $height_font, $angle, 470, 243, $color, $font_file, $schet1);
$bik1 = imagettftext($src_img, $height_font, $angle, 470, 303, $color, $font_file, $bik);
$sch2 = imagettftext($src_img, $height_font, $angle, 470, 320, $color, $font_file, $schet2);
if ($size_img[2] == 2)
{
header("Content-type: image/jpeg");
imagejpeg($src_img);
}
imagedestroy($src_img);
// Функция преобразует текст из кодировки 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;
}
?>
|
| |
|
|
|
|
|
|
|
для: Den*s
(27.07.2011 в 14:11)
| | функцию оперделяют до её использования
и обращаться к ней надо
не так
toUnicodeEntities($sum_prop);
|
а так
$sum_prop=toUnicodeEntities($sum_prop);
|
| |
|
|
|
|
|
|
|
для: Valick
(27.07.2011 в 14:23)
| | Всё заработало, спасибо | |
|
|
|
|