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

Форум PHP

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

 

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

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

тема: Создание графики на PHP
 
 автор: sLim80   (14.09.2006 в 14:46)   письмо автору
 
 

Есть файл img.php


<?php
$img 
imagecreate(100,100);
$white imagecolorallocate($img0xFF0xFF0xFF);
$black Imagecolorallocate($img000);
$points = array(00,100,100,0,100,100,0);
imagepolygon($img$points4$black);
header("Content-type: image/png");
imagepng($img);
$s=1//эту переменную хочу передать в m.php
?>



и второй m.php:


Начало <br>
<img src="img.php">
<br> Конец
<?
print $s//примерно так нужно мне получить данные из файла img.jpg
?>


Задача была вывести текст и генерируемое в файле img.php изображение.
Вопрос в следующем:

Как вывести в файле m.php значение переменной, которая использовалась в img.php
(в этом примере я создал переменную $s).

Сразу оговорюсь, вывод в виде графики меня не устраивает.

   
 
 автор: Night_Charter   (14.09.2006 в 16:20)   письмо автору
 
   для: sLim80   (14.09.2006 в 14:46)
 

Зачем изобретать велосипед?

<?php 

$img_x          
80;   //Ширина изображения, по умолчанию-100 
$img_y          26;   //Высота изображения, по умолчанию-30 
$num_n          5;    //Число цифр, default-4 
$font_min_size  12;   //Минимальный размер шрифта, по умолчанию-12 
$lines_n_max    1;    //Максимальное число шумовых линий, по умолчанию-2 
$nois_percent   4;    //Зашумленность цветами фона и текста, в процентах, по умолчанию-3 
$angle_max      18;   //Максимальный угол отклонения от горизонтали по часовой стрелке и против, по умолчанию-20 

$font_arr=glob(dirname(__FILE__)."/fonts/*.ttf"); 

$im=imagecreate($img_x$img_y); 
//создаем необходимые цвета 
$text_color imagecolorallocate($im000);       //цвет текста 
$nois_color imagecolorallocate($im000);       //цвет зашумляющих точек и линий 
$img_color  imagecolorallocate($im255255255); //цвет фона 
//заливаем изображение фоновым цветом 
imagefill($im00$img_color); 
//В переменной $number будет храниться число, показанное на изображении 
$number=''

for (
$n=0$n<$num_n$n++){ 
    
$num=rand(0,9); 
    
$number.=$num
    
$font_size=rand($font_min_size$img_y/2); 
    
$angle=rand(360-$angle_max,360+$angle_max); 

    
$font_cur=rand(0,count($font_arr)-1); 
    
$font_cur=$font_arr[$font_cur]; 
    
//вычисление координат для каждой цифры, формулы обеспечивают нормальное расположние 
    //при любых значениях размеров цифры и изображения 
    
$y=rand(($img_y-$font_size)/4+$font_size, ($img_y-$font_size)/2+$font_size); 

    
$x=rand(($img_x/$num_n-$font_size)/2$img_x/$num_n-$font_size)+$n*$img_x/$num_n

    
imagettftext($im$font_size$angle$x$y$text_color$font_cur$num); 
}; 
//Вычисляем число "зашумленных" пикселов 
$nois_n_pix=round($img_x*$img_y*$nois_percent/100); 
//зашумляем изображение пикселами цвета текста 
for ($n=0$n<$nois_n_pix$n++){ 
    
$x=rand(0$img_x); 
    
$y=rand(0$img_y); 
    
imagesetpixel($im$x$y$nois_color); 
}; 
//зашумляем изображение пикселами фонового цвета 
for ($n=0$n<$nois_n_pix$n++){ 
    
$x=rand(0$img_x); 
    
$y=rand(0$img_y); 
    
imagesetpixel($im$x$y$img_color); 
}; 

$lines_n=rand(0,$lines_n_max); 
//проводим "зашумляющие" линии цвета текста 
for ($n=0$n<$lines_n$n++){ 
    
$x1=rand(0$img_x); 
    
$y1=rand(0$img_y); 
    
$x2=rand(0$img_x); 
    
$y2=rand(0$img_y); 
    
imageline($im$x1$y1$x2$y2$nois_color); 
}; 

Header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); 
Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT"); 
Header("Cache-Control: no-cache, must-revalidate"); 
Header("Pragma: no-cache"); 

header("Content-type: image/png"); 
imagepng($im); 
imagedestroy($im); 

//В переменной $number хранится число, показанное на изображении 

?> 

   
 
 автор: sLim80   (15.09.2006 в 07:40)   письмо автору
 
   для: Night_Charter   (14.09.2006 в 16:20)
 

Я знаю, как генерировать графику и выводить текст в виде графики.

Я работаю с базой данных, делаю визуализаци. Нужно вывести кучу информации, потом график (основанный на данных из базы) и после графика ещё кучу текстовой информации.

Сгенерировать график я могу (обращаюсь к базе, работаю с данными, получаю несколько расчётных данных). Но одновременно на одной странице вывести текстовую информацию и сам график не могу.

А если создавать другой файл и вставлять туда график через <img src...>, то получается вывести и график и текст, но не могу вывести расчётные данные, которые получались во время построения графика.

Вопрос: как передать данные из этого файла (где строится график) в другой, который отображает график и текстовую информацию?

   
 
 автор: Drago   (15.09.2006 в 08:46)   письмо автору
 
   для: sLim80   (15.09.2006 в 07:40)
 

А вы попробуйте все расчеты проводить в отдельном файле, в котором будете вставлять график через <img src...>, передавая скрипту строящему график, нужные данные методом GET.

   
 
 автор: Whi-teOoS   (15.09.2006 в 12:41)   письмо автору
 
   для: sLim80   (14.09.2006 в 14:46)
 

Можно так-же через сессию
img.php

<?php 
$img 
imagecreate(100,100); 
$white imagecolorallocate($img0xFF0xFF0xFF); 
$black Imagecolorallocate($img000); 
$points = array(00,100,100,0,100,100,0); 
imagepolygon($img$points4$black); 
header("Content-type: image/png"); 
imagepng($img); 
$s=1//эту переменную хочу передать в m.php 
session_start();
$_SESSION['peredat']=$s;
?>


m.php

Начало <br> 
<img src="img.php"> 
<br> Конец 
<?
session_start
();
if(!isset(
$_SESSION['peredat']))
   {
      echo(
"FATAL ERROR! Данные передать не удалось");
   } 
else
   {
      echo 
$_SESSION['peredat'];
   }
?>


Если не прав или где ошибся, думаю меня поправят =)

   
 
 автор: sLim80   (15.09.2006 в 13:45)   письмо автору
 
   для: Whi-teOoS   (15.09.2006 в 12:41)
 

Да.
По моему этот способ самый действенный.

Минус только в том, что каждую переменную нужно заносить. А мне приходится большое количество переменных расчитывать и передавать.

Хотелось бы типа через $GLOBALS["ss"], чтоб предварительно не объявлять все переменные.

Ничего не поделаешь.

Всем спасибо за советы!

   
Rambler's Top100
вверх

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