Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изображение и текст из одного скрипта, как вывести 
:(
    Опции темы
RinOSpro
Дата 18.11.2009, 13:38 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет! Подскажите пожалуйста как такое реализовать:
Пользователь вводит данные в страничке, после они отправляются на сервер. По введенным данным рисую график, и заполняю таблички. К примеру graph.php выводит текст, а как вывести рисунок?

  Вверх
Ипатьев
Дата 18.11.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



браузер понимает формат HTML
вам подсказать, как картинки выводятся в html?
PM MAIL   Вверх
RinOSpro
Дата 18.11.2009, 13:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Как выводить в html я знаю smile не понятно как сохранить рисунок на диск во временный файл, и получив адрес подсунуть его в <img>.
  Вверх
Ипатьев
Дата 18.11.2009, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



так та же функция, которая рисует график, его же и сохраняет
если указать имя файла

Добавлено через 4 минуты и 13 секунд
Но обычно делают не так, а передают данные для постройки графика в скрипт, который этим и занимается
PM MAIL   Вверх
MoLeX
Дата 18.11.2009, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Код

<img src="http://site.com/graph.php" />


?!


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
solenko
Дата 18.11.2009, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Если сверхкритично чтобы все отдавалось за один запрос, то есть data-uri. Проблемы с IE грантированы. 


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
RinOSpro
Дата 18.11.2009, 16:32 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











MoLeX graph.php выводит html текст, а изображение как то нужно записать в временный файл и в:
Код

<img src="http://site.com/tmpfile.png" />

вывести пользователю. Вот как это сделать что бы не было проблем.
  Вверх
Ипатьев
Дата 18.11.2009, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



RinOSpro, если вы вдруг не заметили, вывод во временный файл - не единственный способ.
по поводу вывода файла. У вас уже есть скрипт, который рисует график, или вы о нем пока только мечтаете?
PM MAIL   Вверх
RinOSpro
Дата 18.11.2009, 17:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ипатьев @  18.11.2009,  16:36 Найти цитируемый пост)
вывод во временный файл - не единственный способ.

Дай пищу для размышлений)

Скрипт есть, он в graph.php.
  Вверх
Ипатьев
Дата 18.11.2009, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Вам дали пищу уже не один раз.
Не все в одном, а по отдельности. Один скрипт строит таблицу, а второй - график.

С временным файлом какие трудности?
У вас, в вашем graph.php есть функция, которая выводит график?
Вы смотрели в документации ее описание? может быть, она умеет сохранять в файл вместо вывода на экран?
PM MAIL   Вверх
MoLeX
Дата 19.11.2009, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140



Цитата(RinOSpro @  18.11.2009,  16:32 Найти цитируемый пост)
graph.php выводит html текст, а изображение как то нужно записать в временный файл


если этот скрипт отвечает за рисунок, то он не должен выводить HTML

Добавлено через 22 секунды
RinOSpro, код вашего скрипта в студию


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
RinOSpro
Дата 19.11.2009, 10:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ипатьев @  18.11.2009,  17:51 Найти цитируемый пост)
Не все в одном, а по отдельности. Один скрипт строит таблицу, а второй - график.

Конечно это хорошо, но в результате обработки данных появляется не хилый массив. Из него строю html-страничку, и попутно в Image рисую график.

Цитата(MoLeX @  19.11.2009,  06:43 Найти цитируемый пост)
Добавлено через 22 секундыRinOSpro, код вашего скрипта в студию

Да ни чего особенного. рисует в Image линии всего то...

Код

    $image = imagecreatefrompng("templ.png");

    for($i = 0; $i < 1000; $i++)
      for($j = 0; $j < 1000; $j++)
      {
         // как мне кажется уж лучше писать в HTML, и рисовать в одном цикле...
      }


  Вверх
Ипатьев
Дата 19.11.2009, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



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

Вы смотрели в документации описание функции, выводящей график? может быть, она умеет сохранять в файл вместо вывода на экран? 
PM MAIL   Вверх
RinOSpro
Дата 19.11.2009, 10:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Ипатьев @  19.11.2009,  10:12 Найти цитируемый пост)
Вы смотрели в документации описание функции, выводящей график?


Я рисую сам на Image, ручками, без каких либо сторонних классов. Мне просто нужно сделать это в "желательно" одном цикле, иначе очень долго. 

От вас хочу получить ответ, как сохранить в временный файл. И могут ли возникнуть проблемы о которых я пока не знаю?
  Вверх
Ипатьев
Дата 19.11.2009, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Функции, выводящей график.
Вопрос не в рисовании.
Вопрос в выводе.
Вы выводили хоть раз свое изображение на экран? Вы это делаете "ручками"? 
Или все-таки встроенной в РНР функцией?
Эта функция умеет сохранять содержимое картинки в файл, вместо того, чтобы отправлять его браузеру.

PM MAIL   Вверх
RinOSpro
Дата 19.11.2009, 11:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Да я выводил на экран)
Код

    Header("Content-Type: image/png");
    ImagePNG($image);
    ImageDestroy($image);


также могу сохранять в файл:
Код

    $out = "dst.png";
    ImagePng($image, $out);
    ImageDestroy($image);



Это сообщение отредактировал(а) RinOSpro - 19.11.2009, 11:33
  Вверх
Ипатьев
Дата 19.11.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Прекрасно.
Ну и как - работает?

PM MAIL   Вверх
RinOSpro
Дата 19.11.2009, 11:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну вроде да)
  Вверх
Ипатьев
Дата 19.11.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



только следует учесть, что если график будут просматривать несколько человек, то каждый новый будет затирать картинку предыдущего.
для этого можно давать картинке случайное имя.
или не случайное. а зависящее от входных параметров.
а при показе - проверять. и если такая картинка уже есть, то не строить ее
PM MAIL   Вверх
RinOSpro
Дата 19.11.2009, 15:28 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

<?
  function randomstring($len)  
  {  
    $i = 0;  
    $str = "";  
    srand(date("s"));  
    while($i<$len)  
    {  
      $str.=chr((rand()%26)+97);  
      $i++;
    }
    return $str;  
  }
  
  $out = md5(randomstring(10)).".png";
?>


Спасибо, сделал так. Только проблема в том что это не temp файл, и после завершения работы скрипта, он не удаляется.

Это сообщение отредактировал(а) RinOSpro - 19.11.2009, 15:50
  Вверх
Ипатьев
Дата 19.11.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



он и не должен по завершении скрипта удаляться.
иначе его никто не увидит

Если их хранить не планируется, то я бы порекомендовал генерировать, все-таки, в отдельном скрипте, передавая в него данные через сессию, используя session_write_close()

ну, или запускать в начале скрипта сборщик мусора
PM MAIL   Вверх
RinOSpro
Дата 19.11.2009, 16:25 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











И еще проблема вот в чем... Страничка уже вывелась, а картинка только сохранилась на диск, следствие чего пользователь ее наблюдает только когда "повезет", как исправить наименьшей кровью)?
  Вверх
RinOSpro
Дата 20.11.2009, 19:03 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Помогите) Работает через раз, а то(( 
Ну хорошо уговорили, генерировать через другой скрипт. 
Как можно массив в другой скрипт передать и с другой стороны получить?
  Вверх
Ипатьев
Дата 20.11.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



session_start(); в начале скрипта
$_SESSION['session_array']=$data;


session_start(); в начале скрипта
$data=$_SESSION['session_array'];

а если генерить в том же скрипте, то надо поколдовать с буфферингом.
чтобы html отдавался только по окончании работы скрипта.
ob_start(); в начале скрипта




 

Это сообщение отредактировал(а) Ипатьев - 20.11.2009, 19:08
PM MAIL   Вверх
K0T9I
Дата 21.11.2009, 03:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



 smile 
data.php
Код

session_start();
$data=$_POST['data']; // данные от пользователя;

$newImage=imagecreatetruecolor(1000,1000); 
for ($i=0;$i<1000;$i++){
  for ($j=0;$j<1000;$j++){
    // обработка данных от пользователя и их вывод
   // создание изображения (без вывода в поток, т.е. без imagepng)
   // и т.д. 
  }
}

ob_start();
imagepng($newImage);
$img=ob_get_contents();
ob_end_clean();
$_SESSION['img']=$img;

echo "<img src='graph.php'  alt='img' />";


graph.php
Код

session_start();
Header("Content-Type: image/png");
if (isset($_SESSION['img'])){
  echo $_SESSION['img'];
}
else{
  $error = imagecreatefrompng('error_image.png'); // где error_image.png, какое-нить готовое изображение об ошибке
  imagepng($error);
}


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

UPD: еще надо подумать о кешировании изображений в браузере, изменив строчку в data.php, что то типо:
Код

$rand=time(); // или rand(1,100000) или еще как-нить
echo "<img src='graph.php?anticache=$rand'  alt='img' />";


Это сообщение отредактировал(а) K0T9I - 21.11.2009, 04:01
PM MAIL   Вверх
Ипатьев
Дата 21.11.2009, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



K0T9I, что-то вы совсем не в ту степь уехали.
На мой взгляд, не стоит изобретать хитрые способы для решения стандартных задач.
PM MAIL   Вверх
K0T9I
Дата 21.11.2009, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



а чего там хитрого то? smile  какая разница что в сессии передать скрипту создающему изображение: весь массив значений для создания или уже готовое изображение. smile 
PM MAIL   Вверх
Ипатьев
Дата 21.11.2009, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Большая. Массив у нас уже есть, а изображение еще надо получить.
Получается лишнее действие. 
Лишних действий следует избегать, как учит нас парикмахер Оккам
PM MAIL   Вверх
K0T9I
Дата 21.11.2009, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



вы так говорите, как будто лишние действия это что то плохое

а массив то для чего нужен?
PM MAIL   Вверх
Ипатьев
Дата 21.11.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



Да. Лишние действия - это очень плохо.
Вся современная цивилизация и наука построена на этом принципе. 
Конкретно же в веб программировании очень многие программы перестают работать очень быстро. Из-за множества лишних действий. 
PM MAIL   Вверх
RinOSpro
Дата 23.11.2009, 12:44 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











K0T9I как раз то что нужно) 
Вся идея состояла в том что бы генерировать изображение и текст в одном цикле) а вопрос был как выводить. Прочел мысли)) +1;
  Вверх
K0T9I
Дата 23.11.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 20.11.2009

Репутация: 2
Всего: 2



я вот еще раз повторюсь, незнаю как себя поведет при больших размерах изображений smile 

ps: рад что помог smile  
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0876 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.