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

Форум PHP

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

 

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

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

тема: Вывод динамически сформированного изображения в браузер
 
 автор: Рафик   (02.09.2007 в 23:09)   письмо автору
 
 

Доброго времени суток всем!
Есть некая проблема:
В некоем файле, в котором находится форма, я подключаю внешний файл, который рисует изображение, что-то типа анти-робота. Конечные строки которого выглядят:

header('Content-type: image/jpeg');
imagejpeg($img);


Подключаю:

include 'create_image.php'

А в ответ в браузер ровно посередке выводится изображение по умолчанию, т.е. то, что обычно случается если браузер не найдет файл изображения. Никаких других данных нету, формы, текста и прочей информации: голая страница, посередине которой вот эта ерундень.

   
 
 автор: bronenos   (02.09.2007 в 23:14)   письмо автору
 
   для: Рафик   (02.09.2007 в 23:09)
 

надо через img а не код

   
 
 автор: Рафик   (02.09.2007 в 23:17)   письмо автору
 
   для: bronenos   (02.09.2007 в 23:14)
 

Простите, но не совсем понятно. Что делает по сути imagejpeg().
Так правильно <img>imagejpeg()</img>?

   
 
 автор: Рафик   (02.09.2007 в 23:22)   письмо автору
 
   для: Рафик   (02.09.2007 в 23:17)
 

Или в create_image.php

imagejpeg($img, 'images/name.jpeg');

а выводить:
<img src='image/name.jpeg'></img>

   
 
 автор: Drago   (02.09.2007 в 23:24)   письмо автору
 
   для: Рафик   (02.09.2007 в 23:17)
 

Напишите, вместо

include 'create_image.php'


так

echo "<img src='create_image.php'>";

   
 
 автор: Рафик   (02.09.2007 в 23:30)   письмо автору
 
   для: Drago   (02.09.2007 в 23:24)
 

Рисунок не показывает.

   
 
 автор: Poison   (02.09.2007 в 23:59)   письмо автору
 
   для: Рафик   (02.09.2007 в 23:30)
 

Что происходит если к файлу обраться напрямую через броузер? ( имею ввиду который генерирует картинку )

   
 
 автор: Рафик   (03.09.2007 в 20:01)   письмо автору
 
   для: Poison   (02.09.2007 в 23:59)
 

Я тоже сначала так хотел, но хотелось бы поэлегантнее!

   
 
 автор: cheops   (03.09.2007 в 12:09)   письмо автору
 
   для: Рафик   (02.09.2007 в 23:09)
 

Посмотрите исходный текст страницы - что там?

   
 
 автор: Рафик   (03.09.2007 в 20:01)   письмо автору
 
   для: cheops   (03.09.2007 в 12:09)
 

<img src='create_image.php'></img>

   
 
 автор: Рафик   (03.09.2007 в 20:05)   письмо автору
 
   для: Рафик   (03.09.2007 в 20:01)
 

НЕ ПОНЯТНО но на localhost через Editor все OK, картинка отображается. Я думал, что проблема в браузере, потому что пользуюсь Opera. Запустил в Internet Explorer тоже самое. Может ftp менеджер не до конца качает файлы на сервер, хотя это глупое предположение?

   
 
 автор: Рафик   (03.09.2007 в 20:08)   письмо автору
 
   для: Рафик   (03.09.2007 в 20:01)
 

Посмотрел код который генерится на странице в локале, тоже:
<img src='create_image.php'></img>

   
 
 автор: Рафик   (03.09.2007 в 20:37)   письмо автору
 
   для: Рафик   (03.09.2007 в 20:08)
 

Посмотрел свойства "пустого рисунка" url - 'create_image.php' 0x0 пикселей, размер 8.3 Кб, формат png! PNG потому что использовал imagepng!

   
 
 автор: Poison   (03.09.2007 в 21:23)   письмо автору
 
   для: Рафик   (03.09.2007 в 20:37)
 

Я тоже сначала так хотел, но хотелось бы поэлегантнее!

Нет. Вы мне все-таки ответе что происходит если открыть файл create_image.php через строку запроса?

   
 
 автор: Рафик   (04.09.2007 в 10:09)   письмо автору
 
   для: Poison   (03.09.2007 в 21:23)
 

Нет. Вы мне все-таки ответе что происходит если открыть файл create_image.php через строку запроса?
Пустой рисунок прямо по середке страницы!

   
 
 автор: Рафик   (04.09.2007 в 10:14)   письмо автору
 
   для: Рафик   (04.09.2007 в 10:09)
 

Может у меня на хостере отключена библиотека gd?

   
 
 автор: Poison   (04.09.2007 в 10:46)   письмо автору
 
   для: Рафик   (04.09.2007 в 10:09)
 

Пустой рисунок прямо по середке страницы!

Вот с этого им надо было начинать;)
Теперь в попробуйте убрать заголовок header('image/png');

   
 
 автор: Рафик   (06.09.2007 в 21:36)   письмо автору
 
   для: Poison   (04.09.2007 в 10:46)
 

Ан - нет, крепкий орешек. Извините, что пропал - не было выхода в инет?
Сделал как посоветовали, пока все также!

   
 
 автор: Trianon   (06.09.2007 в 23:14)   письмо автору
 
   для: Рафик   (06.09.2007 в 21:36)
 

Попробуйте для начала поработать с GIF-рисунком.
PNG-тип поддерживается не каждым браузером.

   
 
 автор: Рафик   (06.09.2007 в 23:24)   письмо автору
 
   для: Trianon   (06.09.2007 в 23:14)
 

Попробую gif. Узнавал на хостинге. Сказали библиотека подключена, все в порядке.

   
 
 автор: Рафик   (06.09.2007 в 23:28)   письмо автору
 
   для: Trianon   (06.09.2007 в 23:14)
 

Пробовал GIF. Что за напасть - ничего не помогает.
В учебнике прочитал, что header нужно применять только если никаких html данных не передавалось. Может это как-то поможет?

   
 
 автор: Trianon   (07.09.2007 в 08:31)   письмо автору
 
   для: Рафик   (06.09.2007 в 23:28)
 

Никаких данных вообще .

Откуда в скрипте, формирующем изображение, взяться HTML-данным ?

http://softtime.ru/forum/read.php?id_forum=1&id_theme=14203

   
 
 автор: Рафик   (08.09.2007 в 18:21)   письмо автору
 
   для: Trianon   (07.09.2007 в 08:31)
 

Я имею в виду та страница которая содержит тег img:

. . .

 <p align='center' style='color: #800040'>макс-ый размер <b>10 Кб</b><br>
                      Рекомендуемая длина и ширина: 150х100 или 100х150<br>
                   Допускаются следующие форматы <br>файлов: <b>bmp, jpg, jpeg, gif, png</b></p>

  <img src='create_image.php'></img><br>
  <input name='inputcode' type='text' title="Введите контрольную фразу">

. . .



А вообще мне кажется не в этом проблема. Если у кого есть какие-либо предложения - напишите пожалуйста. Спасибо за участие!

   
 
 автор: Trianon   (08.09.2007 в 18:40)   письмо автору
 
   для: Рафик   (08.09.2007 в 18:21)
 

скрипт (допустим create_html.php) фрагмент которого Вы только что привели , формирующий страницу с html-кодом , не будет сам формировать изображение. Он в этом самом коде создает тег со ссылкой, по которой браузер вызывает другой скрипт create_image.php для этой цели.

скрипт create_image.php занимается только формированием изображения и никаких тегов не выводит.


Это два разных скрипта.

   
 
 автор: Рафик   (08.09.2007 в 21:34)   письмо автору
 
   для: Trianon   (08.09.2007 в 18:40)
 

Все-таки какой выход?

   
 
 автор: Рафик   (08.09.2007 в 21:47)   письмо автору
 
   для: Рафик   (08.09.2007 в 21:34)
 

Привожу полный код create_image.php:


$size_x = 200;
$size_y = 75;

$code = 'secret';
$space_per_char = $size_x / (strlen($code)+1);

$img = imagecreatetruecolor($size_x, $size_y);
$background = imagecolorallocate($img, 255, 255, 255);
$border = imagecolorallocate($img, 128, 128, 128);
$colors[] = imagecolorallocate($img, 128, 64, 192);
$colors[] = imagecolorallocate($img, 192, 64, 128);
$colors[] = imagecolorallocate($img, 108, 192, 64);
imagefilledrectangle($img, 1, 1, $size_x - 2, $size_y - 2, $background);
imagerectangle($img, 0, 0, $size_x - 1, $size_y - 1, $border);

for ($i = 0; $i < strlen($code); $i++) {
    $color = $colors[rand(0, count($colors)-1)];
    imagettftext($img, 28 + rand(0, 8), -20 + rand(0, 40), ($i + 0.3) * $space_per_char, 50 + rand(0, 10), $color, 'arial.ttf', $code{$i});
}

imageantialias($img, true);

for ($i = 0; $i < 1000; $i++) {
    $x1 = rand(5, $size_x - 5);
    $y1 = rand(5, $size_y - 5);
    $x2 = $x1 - 4 + rand(0, 8);
    $y2 = $y1 - 4 + rand(0, 8);
    imageline($img, $x1, $y1, $x2, $y2, $colors[rand(0, count($colors)-1)]);
}
header('Content-type: image/gif');
imagegif($img);


Может это как проянить ситуцию!

   
 
 автор: Trianon   (08.09.2007 в 22:06)   письмо автору
 
   для: Рафик   (08.09.2007 в 21:47)
 

Файл create_image.php должен начинаться с символов <?php
И заканчиваться символами ?>
У Вас этого не видно.

   
 
 автор: Рафик   (11.09.2007 в 12:36)   письмо автору
 
   для: Trianon   (08.09.2007 в 22:06)
 

Просто я опустил их. Они есть. В чем же проблема?
Может функция imagetruecolor или еще какая-либо не работает. Я поэксперементирую. Может ситуация прояснится. Уже замучился с этим. Как в болоте застрял.

   
 
 автор: Trianon   (11.09.2007 в 13:00)   письмо автору
 
   для: Рафик   (11.09.2007 в 12:36)
 

а что пишет на хостинге phpinfo() о графической библиотеке?

   
 
 автор: Рафик   (13.09.2007 в 20:39)   письмо автору
 
   для: Trianon   (11.09.2007 в 13:00)
 

gd
GD Support enabled
GD Version bundled (2.0.28 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.2.1
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled
XBM Support enabled

   
 
 автор: Рафик   (14.09.2007 в 15:56)   письмо автору
 
   для: Рафик   (13.09.2007 в 20:39)
 

Ответьте пожалуйста, очень нужно!

   
 
 автор: Рафик   (14.09.2007 в 15:56)   письмо автору
 
   для: Рафик   (13.09.2007 в 20:39)
 

Ответьте пожалуйста, очень нужно!

   
Rambler's Top100
вверх

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