| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Изображение и текст из одного скрипта |
| Автор: RinOSpro 18.11.2009, 13:38 |
| Всем привет! Подскажите пожалуйста как такое реализовать: Пользователь вводит данные в страничке, после они отправляются на сервер. По введенным данным рисую график, и заполняю таблички. К примеру graph.php выводит текст, а как вывести рисунок? |
| Автор: Ипатьев 18.11.2009, 13:40 |
| браузер понимает формат HTML вам подсказать, как картинки выводятся в html? |
| Автор: RinOSpro 18.11.2009, 13:44 |
| Как выводить в html я знаю |
| Автор: Ипатьев 18.11.2009, 13:47 |
| так та же функция, которая рисует график, его же и сохраняет если указать имя файла Добавлено через 4 минуты и 13 секунд Но обычно делают не так, а передают данные для постройки графика в скрипт, который этим и занимается |
| Автор: MoLeX 18.11.2009, 14:09 | ||
?! |
| Автор: solenko 18.11.2009, 14:20 |
| Если сверхкритично чтобы все отдавалось за один запрос, то есть data-uri. Проблемы с IE грантированы. |
| Автор: RinOSpro 18.11.2009, 16:32 | ||
MoLeX graph.php выводит html текст, а изображение как то нужно записать в временный файл и в:
вывести пользователю. Вот как это сделать что бы не было проблем. |
| Автор: Ипатьев 18.11.2009, 16:36 |
| RinOSpro, если вы вдруг не заметили, вывод во временный файл - не единственный способ. по поводу вывода файла. У вас уже есть скрипт, который рисует график, или вы о нем пока только мечтаете? |
| Автор: RinOSpro 18.11.2009, 17:40 |
Дай пищу для размышлений) Скрипт есть, он в graph.php. |
| Автор: Ипатьев 18.11.2009, 17:51 |
| Вам дали пищу уже не один раз. Не все в одном, а по отдельности. Один скрипт строит таблицу, а второй - график. С временным файлом какие трудности? У вас, в вашем graph.php есть функция, которая выводит график? Вы смотрели в документации ее описание? может быть, она умеет сохранять в файл вместо вывода на экран? |
| Автор: RinOSpro 19.11.2009, 10:06 | ||||
Конечно это хорошо, но в результате обработки данных появляется не хилый массив. Из него строю html-страничку, и попутно в Image рисую график. Да ни чего особенного. рисует в Image линии всего то...
|
| Автор: Ипатьев 19.11.2009, 10:12 |
| Такое ощущение, что вы читаете ровно по одной строчке из каждого сообщения. Не останавливайтесь, пожалуйста, на этой, прочтите следующую. А то складывается такое впечатление, что вы не проблему решить пришли, а просто поговорить. Вы смотрели в документации описание функции, выводящей график? может быть, она умеет сохранять в файл вместо вывода на экран? |
| Автор: RinOSpro 19.11.2009, 10:18 |
Я рисую сам на Image, ручками, без каких либо сторонних классов. Мне просто нужно сделать это в "желательно" одном цикле, иначе очень долго. От вас хочу получить ответ, как сохранить в временный файл. И могут ли возникнуть проблемы о которых я пока не знаю? |
| Автор: Ипатьев 19.11.2009, 10:37 |
| Функции, выводящей график. Вопрос не в рисовании. Вопрос в выводе. Вы выводили хоть раз свое изображение на экран? Вы это делаете "ручками"? Или все-таки встроенной в РНР функцией? Эта функция умеет сохранять содержимое картинки в файл, вместо того, чтобы отправлять его браузеру. |
| Автор: RinOSpro 19.11.2009, 11:14 | ||||
Да я выводил на экран)
также могу сохранять в файл:
|
| Автор: Ипатьев 19.11.2009, 11:19 |
| Прекрасно. Ну и как - работает? |
| Автор: RinOSpro 19.11.2009, 11:34 |
| Ну вроде да) |
| Автор: Ипатьев 19.11.2009, 13:23 |
| только следует учесть, что если график будут просматривать несколько человек, то каждый новый будет затирать картинку предыдущего. для этого можно давать картинке случайное имя. или не случайное. а зависящее от входных параметров. а при показе - проверять. и если такая картинка уже есть, то не строить ее |
| Автор: RinOSpro 19.11.2009, 15:28 | ||
Спасибо, сделал так. Только проблема в том что это не temp файл, и после завершения работы скрипта, он не удаляется. |
| Автор: Ипатьев 19.11.2009, 16:00 |
| он и не должен по завершении скрипта удаляться. иначе его никто не увидит Если их хранить не планируется, то я бы порекомендовал генерировать, все-таки, в отдельном скрипте, передавая в него данные через сессию, используя session_write_close() ну, или запускать в начале скрипта сборщик мусора |
| Автор: RinOSpro 19.11.2009, 16:25 |
| И еще проблема вот в чем... Страничка уже вывелась, а картинка только сохранилась на диск, следствие чего пользователь ее наблюдает только когда "повезет", как исправить наименьшей кровью)? |
| Автор: RinOSpro 20.11.2009, 19:03 |
| Помогите) Работает через раз, а то(( Ну хорошо уговорили, генерировать через другой скрипт. Как можно массив в другой скрипт передать и с другой стороны получить? |
| Автор: Ипатьев 20.11.2009, 19:07 |
| session_start(); в начале скрипта $_SESSION['session_array']=$data; session_start(); в начале скрипта $data=$_SESSION['session_array']; а если генерить в том же скрипте, то надо поколдовать с буфферингом. чтобы html отдавался только по окончании работы скрипта. ob_start(); в начале скрипта |
| Автор: K0T9I 21.11.2009, 03:44 | ||||||
| data.php
graph.php
в итоге: создание изображения и вывод текстовой инфы в одном цикле, вывод изображения не в файл, сразу в поток страницы. только наверно если изображение много Мб занимает так делать плохо. незнаю. UPD: еще надо подумать о кешировании изображений в браузере, изменив строчку в data.php, что то типо:
|
| Автор: Ипатьев 21.11.2009, 09:28 |
| K0T9I, что-то вы совсем не в ту степь уехали. На мой взгляд, не стоит изобретать хитрые способы для решения стандартных задач. |
| Автор: K0T9I 21.11.2009, 12:29 |
| а чего там хитрого то? |
| Автор: Ипатьев 21.11.2009, 12:33 |
| Большая. Массив у нас уже есть, а изображение еще надо получить. Получается лишнее действие. Лишних действий следует избегать, как учит нас парикмахер Оккам |
| Автор: K0T9I 21.11.2009, 13:12 |
| вы так говорите, как будто лишние действия это что то плохое а массив то для чего нужен? |
| Автор: Ипатьев 21.11.2009, 13:55 |
| Да. Лишние действия - это очень плохо. Вся современная цивилизация и наука построена на этом принципе. Конкретно же в веб программировании очень многие программы перестают работать очень быстро. Из-за множества лишних действий. |
| Автор: RinOSpro 23.11.2009, 12:44 |
| K0T9I как раз то что нужно) Вся идея состояла в том что бы генерировать изображение и текст в одном цикле) а вопрос был как выводить. Прочел мысли)) +1; |
| Автор: K0T9I 23.11.2009, 13:30 |
| я вот еще раз повторюсь, незнаю как себя поведет при больших размерах изображений ps: рад что помог |