|
|
|
| Народ обьясните в чем дело, если вывожу рисунок в браузер с помощью PHP - все нормально, но если еще и текст - то вместо рисунка получаются крякозябры как будто открыли блакнотом. Что я делаю не так? Если можно пример скрипта плиз! | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 20:32)
| | | |
|
|
|
|
|
|
|
для: dimonich2004
(08.02.2008 в 20:34)
| | // Получаем строку, которую нам передали в параметрах
$string="Привет";
// Загружаем рисунок фона с диска
$im = imageCreateFromPng ("1.png") ;
// Создаем в палитре новый цвет — оранжевый
$orange = imageColorAllocate ($im, 10, 200, 40);
// Вычисляем размеры текста, который будет выведен
$рх = (imageSx($im)-8.7*strlen($string) ) /2;
// Выводим строку поверх того, что было в загруженном изображении
imageString ($im, 11, $рх, 2, $string, $orange) ;
// Сообщаем о том, что далее следует рисунок PNG
Header ( "Content-type : image/png" ) ;
// Теперь — самое главное: отправляем данные картинки в
// стандартный выходной поток, т. е. в браузер
imagePng ($im) ;
// В конце освобождаем память , занятую картинкой
imageDestroy ($im) ;
echo "Привет"; | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 21:04)
| | Попробуйте так:
// Получаем строку, которую нам передали в параметрах
$string="Привет";
// Загружаем рисунок фона с диска
$im = imageCreateFromPng ("1.png") ;
// Создаем в палитре новый цвет — оранжевый
$orange = imageColorAllocate ($im, 10, 200, 40);
// Вычисляем размеры текста, который будет выведен
$рх = (imageSx($im)-8.7*strlen($string) ) /2;
// Выводим строку поверх того, что было в загруженном изображении
imageString ($im, 11, $рх, 2, $string, $orange) ;
// Сообщаем о том, что далее следует рисунок PNG
Header ( "Content-type : image/png" ) ;
// Теперь — самое главное: отправляем данные картинки в
// стандартный выходной поток, т. е. в браузер
imagePng ($im) ;
// В конце освобождаем память , занятую картинкой
imageDestroy ($im) ;
Header ( "Content-type : text/html" ) ;
echo "Привет"; | |
|
|
|
|
|
|
|
для: Staglu
(08.02.2008 в 21:08)
| | Staglu, сначала документ image/png, а затем text/html? Ну-ну. | |
|
|
|
|
|
|
|
для: Unkind
(08.02.2008 в 21:10)
| | Пардон... | |
|
|
|
|
|
|
|
для: Staglu
(08.02.2008 в 21:08)
| | Да рисунок стал выводиться не ввиде кряков, но текста нет? | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 21:19)
| | Пардон я тут написал не подумав, текста и не будет! | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 20:32)
| | Скорей всего перед отправкой рисунка вы отпровляете заголовок наверное типо такого:
<?php
header(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($img);
?>
|
Если вы до отправки заголовка выведети текст (пример):
<?php
echo 'Привет МИР!!!';
header(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($img);
?>
|
То у вас получиться кракозябры.
Вообще опишите поточнее, какая у Вас картинка выводиться, создоется у вас она средствами PHP и.т.д, а то не очень понятно! | |
|
|
|
|
|
|
|
для: Staglu
(08.02.2008 в 20:54)
| | К примеру: у меня идет форма для регистрации за ней должен идти рисунок с кодом для подтверждения регистрации. Я сделал так написал код формы, а потом на php с помощью генератора случайных чисел и кода который привел выше пытаюсь вывести рисунок с кодом, но как говорил одни крякозябры. Привидите мне пример плиз, как это можно реализовать!(Я не волшебник, я только учусь) | |
|
|
|
|
|
|
|
для: alex123434
(08.02.2008 в 21:15)
| | Просто можно отдельно PHP-скрипт создать, который генерирует картинку к примеру capcha.php значение которое наноситься на картинку сохранить в сессию, затем просто в форму с регистрацией добавить тег <img src=\"captcha.php\">. Вот пример:
captcha.php
session_start();
$image_x = \"100\";
$image_y = \"30\";
$shum = \"4\";
$min_fon_size = \"20\";
$ugol_max = \"30\";
$text_len = \"4\";
$line_len = \"20\";
$pat_font = \"../font/verdana.ttf\";
//Создаем изоброжение
$img = imagecreatetruecolor($image_x , $image_y);
//Установливаем цвет фона
$fon = imagecolorallocate($img, 255,255,255);
//Заливаем картинку цветом
imagefill($img, 0, 0, $fon);
for($i=0; $i < $text_len; $i++)
{
srand((float) microtime()*1000000);
$text = rand(0,9);
$num = $num.$text;
$ugol = rand(360 - $ugol_max,360 + $ugol_max);
$size = rand($min_fon_size, $image_y/2);
$color_rand[$i] = imagecolorallocate($img, rand(0,250),rand(0,250),rand(0,250));
$y = rand(($image_y-$size)/4+$size, ($image_y-$size)/2+$size);
$x = rand(($image_x/$text_len-$size)/2, $image_x/$text_len-$size)+$i*$image_x/$text_len;
imagettftext($img, $size, $ugol, $x, $y, $color_rand[$i], $pat_font, $text);
}
for($i = 0; $i < round($image_x*$image_y*$shum/100)/2; $i++)
{
srand((float) microtime()*1000000);
$color = rand(0,count($color_rand));
imagesetpixel($img,rand(0, $image_x), rand(0, $image_y), $color_rand[$color]);
imagesetpixel($img,rand(0, $image_x), rand(0, $image_y), $fon);
}
for($i = 0; $i < round($line_len/2); $i++)
{
srand((float) microtime()*1000000);
$color = rand(0,count($color_rand));
if(rand(0,1) == 1)
{
imageline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y),$color_rand[$color]);
imagedashedline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y), $fon);
}
else
{
imageline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y),$fon);
imagedashedline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y), $color_rand[$color]);
}
}
$_SESSION[\"captcha\"] = $num;
if($img)
{
header(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
imagepng($img);
}
|
и вот форма:
<table width=100% border=0>
<tr>
<td colspan=2><font size=5 color=66666><b>Авторизация</b></font></td>
</tr>
<tr>
<td colspan=2><hr></td>
</tr>
<tr>
<td><font size=2 color=66666><b>Логин</b></font></td>
<td><input size=\"25\" name=\"login\" type=\"text\" value=\"\"></td>
</tr>
<tr>
<td><font size=2 color=66666><b>Пароль</b></font></td>
<td><input size=\"25\" name=\"pasword\" type=\"text\" value=\"\"></td>
</tr>
<tr>
<td colspan=2><br /></td>
</tr>
<tr>
<td>
<font size=2 color=66666><b>Введите число:</b></font><br />
<img src=\"captcha.php\" border=\"1\">
</td>
<td><br /><input size=5 name=\"captcha\" type=\"text\" value=\"\"></td>
</tr>
<tr>
<td colspan=2 align=right><input type=\"submit\" value=\"Войти\"></td>
</tr>
</table>
|
Выше я представил код авторизации (не регистрации), но я думаю Вы поняли.
Надеюся в этот раз Я бред не написал!! | |
|
|
|
|
|
|
|
для: Staglu
(08.02.2008 в 21:23)
| | Все, спасибо! Толко <img src=\"captcha.php\" border=\"1\"> этоже не PHP косые черты не надо. Но это принимаю как опечатку. Еще обошолся без ссесий на основе приведенного мною выше скрипта. Огромное спасибо все работает. | |
|
|
|
|