[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перенос параметров в скрипт картинки...
brdm
Подскажите пожалуйста, как можно перенести множество параметров в скрипт генерирующий картинку, в частности числовые.
<img src=http://test.ru/php/key.php?g=$k>
Можно-ли как-то в key.php передать $k как матрицу числовых значений, которые потом можно использовать для построения графики ?





Спустя 7 часов, 1 минута, 30 секунд (14.02.2009 - 08:14) Sylex написал(а):
brdm
приведи их в удобный вид в строку, и передавай, а там обратно - в массив...
можно сериализовать:
http://javascript.ru/php/serialize

Спустя 3 часа, 44 минуты, 47 секунд (14.02.2009 - 11:58) Guest написал(а):
А на php это как будет выглядеть?

Допустим есть массив $arr = aray (10,11,13,16,17);

Как на php его привести в строку, а потом обратно?

Спустя 31 минута, 48 секунд (14.02.2009 - 12:30) Viking написал(а):

Спустя 1 час, 42 минуты, 14 секунд (14.02.2009 - 14:12) sergeiss написал(а):
Цитата (brdm @ 14.02.2009 - 01:12)
Подскажите пожалуйста, как можно перенести множество параметров в скрипт генерирующий картинку, в частности числовые.
<img src=http://test.ru/php/key.php?g=$k>
Можно-ли как-то в key.php передать $k как матрицу числовых значений, которые потом можно использовать для построения графики ?

Лучше по-другому сделай. Заводишь отдельную таблицу в БД, куда закидываешь все параметры, относящиеся к графику. А в ссылке передаешь только идентификатор этого графика, ну, может, еще размеры графика.
У меня это великолепно работает.
При этом в скрипте выводится визуальная таблица с данным из графика, в таблицу в БД записываются данные для графика, и формируется ссылка на скрипт, формирующий график. "3 в 1" smile.gif

Спустя 1 час, 4 минуты, 23 секунды (14.02.2009 - 15:17) brdm написал(а):
Да, интересно.

А можно поподробнее (небольшой пример) про базу и индентификатор?

Спустя 12 минут, 11 секунд (14.02.2009 - 15:29) sergeiss написал(а):
Куда бы уж подробнее-то? blink.gif

Вот смотри.
Выбрал ты из какой-то большой таблицы небольшой набор данных для построения графика.
В другую таблицу записал: этот набор данных, подписи для осей Х и У, уникальный идентификатор, заголовок, тип графика (если их может быть несколько) и ещё всё, что хочешь. Сколько захочешь полей в БД, столько и создавай.
Далее формируешь картинку, где вместо файла с картинкой указан твой скрипт.
Например, так
HTML
<img src="http://localhost/draw_graphic.php?id=1242342&width=800&height=600">

В скрипте обращаешься к БД, и строишь график согласно данных из таблицы графиков с переданным идентификатором.

Данные о самом графике перед записью в БД лучше "сериализовать", чтобы они были записаны в одну переменную.

Спустя 26 минут, 20 секунд (14.02.2009 - 15:55) brdm написал(а):
Спасибо. В общих чертах понял.
В качестве базы можно ведь и простой текстовый файл использовать. так ведь? Туда писать данные для графиков, а в скрипре строящим график их оттуда вытаскивать.

Только вот про серилизацию, ничего не понял. Что это такое и с чем его едят?
Тоисть я имею ввиду в чем суть этой серилизации? В чем суть процесса серилизации и десерилизации. К чему это применяется?

Я так понимаю что сеарилизация это просто превращение данных, в том числе и числовых в строку, которую вобщем можно потом передать как параметр например в той-же $_GET, а потом эту строку где надо превратить в данные.

Правильно-ли я понял?

Спасибо.

Спустя 20 минут, 10 секунд (14.02.2009 - 16:16) sergeiss написал(а):
Цитата (brdm @ 14.02.2009 - 15:55)
Я так понимаю что сеарилизация это просто превращение данных, в том числе и числовых в строку, которую вобщем можно потом передать как параметр например в той-же $_GET, а потом эту строку где надо превратить в данные.

Правильно-ли я понял?

Да, оно самое.
Можно использовать специализированные функции, а можно и самому сделать.
Допустим, у тебя есть таблица из цифр. Если ты разделишь данные из одной строки запятыми, а в конце строки поставишь точку с запятой, то получишь всю таблицу в виде одной строки, пригодную и для передачи через GET (но там есть ограничения по размеру), и для записи в таблицу. И потом сможешь сделать обратное преобразование, не потеряв данные.

Спустя 21 час, 7 секунд (15.02.2009 - 13:16) brdm написал(а):
Спасибо.
Все получилось.

Теперь на картинку нужно нанести числовую шкалу.
Подскажите пожалуйста, как это делается.

Имеется в виду, как на картинку выводить цыфры или буквы?

Спустя 4 часа, 3 минуты, 14 секунд (15.02.2009 - 17:19) sergeiss написал(а):
Цитата (brdm @ 15.02.2009 - 13:16)
Спасибо.
Все получилось.

Теперь на картинку нужно нанести числовую шкалу.
Подскажите пожалуйста, как это делается.

Имеется в виду, как на картинку выводить цыфры или буквы?

Да также, вобщем-то, как и линии smile.gif Т.е. используй специальные функции для вывода текста.

imagettftext(...)

При этом величины для подписи ты можешь передать также, как и параметры для вывода графика, т.е. через отдельный файл или через таблицу БД.

Спустя 2 часа, 30 минут, 58 секунд (15.02.2009 - 19:50) Guest написал(а):
Я работаю на Денвере. Изображение с приемом параметров формируется без проблем.

А вот простой пример из справочника не действует.

PHP
header ("Content-type: image/gif");
$im imagecreate (40030);
$black imagecolorallocate ($im000);
$white imagecolorallocate ($im255255255);
imagettftext ($im2001020$white"/path/arial.ttf""Testing...Omega: Ω");
imagegif ($im);
imagedestroy ($im);


В чем проблема? Подскажите please.
Где-то догадываюсь, что путь к шрифтам должен быть другой, но какой?

Спустя 31 минута, 30 секунд (15.02.2009 - 20:21) Viking написал(а):
щас взломаем твой комп, и поищем где у тебя там шрифты лежат smile.gif
скопируй файл со шрифтом в текущую директорию и читай его из нее, или попробуй другие функции вывода текста, там были какие-то с дефолтными шрифтами
imagestring например

Спустя 34 минуты, 46 секунд (15.02.2009 - 20:56) brdm написал(а):
Со шрифтами разобрался. Работает.

Но всетаки ... как можно выполнить изображение с числовой шкалой тпа такой
acvarif.info/blog/stat.html

Саму сетку сформировать не проблема. Все получается. А вот числа...
Неужели придется каждое число формировать как отдельную картинку с определением ей своего конкретного места и накладывать ее на сетку?

Или есть другой путь?


Спустя 18 минут, 15 секунд (15.02.2009 - 21:14) Viking написал(а):
в смысле? зачем как отдельную картинку? просто выводишь текст в нужном месте на картинке с сеткой и все

Спустя 13 минут, 7 секунд (15.02.2009 - 21:28) brdm написал(а):
Да, но если Вы обратили внимание, текст нужно будет вывести вертикально.
Кроме того я имею ввиду, как это сделать без наличия самой картинки и всяких файлов шрифтов.
Там это сделано именно так. Но..в зенде. Поэтому подсмотреть нельзя.

Спустя 11 минут, 5 секунд (15.02.2009 - 21:39) Viking написал(а):
Цитата
Да, но если Вы обратили внимание, текст нужно будет вывести вертикально.

дык и в чем проблема? делаешь цикл, который при каждой итерации считает вертикальную координату и сует цифры в картинку

Цитата
Кроме того я имею ввиду, как это сделать без наличия самой картинки и всяких файлов шрифтов.
Там это сделано именно так. Но..в зенде. Поэтому подсмотреть нельзя.

сделать картинку без наличия картинки это как? =) В смысле без ее загрузки? дык предполагается, что вы ее и так на лету генерировали с помощью imageCreate
без файлов шрифтов, если размер цифер менять не надо я сказал как делать, вполне возможно там так и сделано, а может шрифты из системы берутся
а вообще можно и другими способами, не обязательно на GD, лично я бы это сделал скорее на SVG, а в принципе можно хоть на С++

Спустя 9 минут, 11 секунд (15.02.2009 - 21:48) brdm написал(а):
Да, именно, какртинка у же сформирована на imagecreate($width, $height); и туда уже передются нужные параметры в том числе сформирована и сетка, которая тоже может получать изменяемые параметры. Вопрос в том как туда наложить еще и числовую шкалу без наличия всяких шрифтов.

Спустя 1 минута, 55 секунд (15.02.2009 - 21:50) Viking написал(а):
ну дык imageString

Спустя 16 минут, 9 секунд (15.02.2009 - 22:06) brdm написал(а):
Цитата
ну дык imageString


Так в томто и дело, что imageString предполагает наличие файла картинки.
Например
PHP
header("Content-type: image/png");
$string = '12345';
$im     = imagecreatefrompng("../images/h.png");
$orange = imagecolorallocate($im, 220, 210, 60);
$px     = (imagesx($im) - 7.5 * strlen($string)) / 2;
imagestring($im, 3, $px, 9, $string, $orange);
....


Но его-же нет. Его формирует php скрипт и это-же скрипт должен формировать и числовую шкалу на сформированном изображени.

Или можно каак-то использовать в качестве $im = imagecreatefrompng("../images/h.png"); уже сфомированное эти-же скриптом имейдж.

Спустя 17 минут, 38 секунд (15.02.2009 - 22:23) sergeiss написал(а):
Ежели шрифтов ну совсем нету (хотя непонятно, почему их нету?), то остается только сделать свою функцию, которая будет работать вместо imagettftext() smile.gif

Либо просто brdm не понимает, что текст печатается функцией imagettftext на картинке также, как и линии... Например,
PHP
imagettftext( $image, $ttfsize, 0, $left+$delta_x+10, $top+$txtsize['height']/, $color['text'], "arial.ttf", 
    str_rus
( $text_legend) );


PS. И зачем брать отдельную картинку с цифрами??? blink.gif

Спустя 11 минут, 36 секунд (15.02.2009 - 22:35) Viking написал(а):
Цитата
Так в томто и дело, что imageString предполагает наличие файла картинки.

с чего это вдруг? оно работает так же как и другие функции имейдж с картинкой, которыми вы там что-то генерируете, и неважно загружена она или сформирована на лету

вот вам пример, я даже не поленился

PHP
<?php

$im 
imageCreate(200,250);
$bg imageColorAllocate($im,0,0,0);
$numbers imageColorAllocate($im,255,0,0);
for(
$i 0;$i<10;$i++) {
   
imageString($im,4,100,$i*20+10,180-$i*20,$numbers);
   
imageLine($im,$i*10,200,$i*10,$i*20,$numbers);
}
header("content-type: image/gif");
imageGif($im);

Спустя 58 секунд (15.02.2009 - 22:36) brdm написал(а):
Все.
Спасибо.
Разобрался.

В качестве изображения на которое можно вывести числа можно взять уже сформированное функцией
$image = imagecreate($width, $height);
.....
И тогда можно делать что-то вроде
PHP
$string = '12345';
$orange = imagecolorallocate($image, 220, 210, 60);
$px     = (imagesx($image) - 7.5 * strlen($string)) / 2;
imagestring($image, 3, $px, 9, $string, $orange);


Спасибо за пример. Подходит, как нельзя лучше.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.