За последние 24 часа нас посетили 59070 программистов и 1811 роботов. Сейчас ищут 944 программиста ...

проблема вывода картинки (использование библиотеки GD)

Тема в разделе "Прочие вопросы по PHP", создана пользователем Firuza, 31 авг 2007.

  1. Firuza

    Firuza Активный пользователь

    С нами с:
    7 июн 2007
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    KG
    Привет!!!(Долго пересматривала что не так но не вижу, библиотекой начала пользоваться только для решения этой проблемы и пока не хорошо разобралась как и куда .... )
    Проблема вывода картинки (использование библиотеки GD)
    Задача: создать диаграмму ,используя библиотеку GD
    На странице статистика выводится некоторая информация в виде диаграмм и текста.
    Проблема состои в следующем: вывод картинки не получется, выводится только значок недоступной картинки и более ничего...
    Код описан ниже :

    здесь функция diagrammy:
    PHP:
    1.  
    2. <?php
    3. //.............................function_DIAGRAMM...............................//
    4.  
    5.  
    6. function Diagramm($value,$value_text,$header_text,$type) {
    7.     //siize of the image
    8.     $W=ImageSX($im);                
    9.     $H=ImageSY($im);
    10.    
    11.     //color  of  the text:
    12.     $im=ImageCreate(500,300);
    13.     $fontcolor=ImageColorAllocate($im,0, 102, 51);
    14.        //count the number of legend content
    15.         $legend_count=count($value_text);
    16.         $max_length=0;
    17.         foreach($value_text as $v) if ($max_length<strlen($v)) $max_length=strlen($v);
    18.         $FONT=2;
    19.         $font_w=ImageFontWidth($FONT);
    20.         $font_h=ImageFontHeight($FONT);
    21.         $l_width=($font_w*$max_length)+$font_h+20;
    22.         $l_height=$font_h*$legend_count+20;
    23.            
    24.             //header text
    25.             $text_header_x=$font_h+200;
    26.             $text_header_y=10;
    27.             $FONT_HEADER=3;
    28.             ImageString($im,$FONT_HEADER, $text_header_x,$text_header_y,$heading_text, $fontcolor);
    29.        
    30. //the type.......................................................................//
    31. //.................................................//              
    32.            
    33.             //legend and square
    34.             $text_x=$font_h+10;
    35.             $text_y=10;
    36.             $square_x=10;
    37.             $i=0;
    38. if($type=1) {          
    39.                     foreach($value_text as $v) {
    40.                     $dy=$text_y+($i*$font_h);
    41.                     ImageString($im, $FONT, $text_x, $dy, $v, $fontcolor);
    42.                     ImageFilledRectangle($im,
    43.                                          $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
    44.                                          $COLORS[$i+1]);
    45.                     ImageRectangle($im,
    46.                                    $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
    47.                                    $fontcolor);
    48.                     $i++;
    49.                     }
    50.             }
    51.  //.................................................//          
    52. //.................................................//
    53.            
    54.     $total=array_sum($value);
    55.     $anglesum=Array(0);
    56.     $angle_grad=Array(0);
    57.     $angle_percent=Array(0);
    58.     $i=1;
    59.  
    60.     // count the angels
    61.     while($i<count($value)) {
    62.         $part=$value[$i-1]/$total;
    63.         $angle_grad[$i]=floor($part*360);
    64.         $angle_percent[$i]=floor($part*100);
    65.         $anglesum[$i]=array_sum($angle_grad);
    66.         $anglesum_percent[$i]=array_sum($angle_percent);
    67.         $i++;
    68.         }
    69.     $anglesum[]=$anglesum[0];
    70.     $anglesum_percent[]=$anglesum_percent[0];
    71.     //esli type=2  
    72.     //.................................................//
    73.     //.................................................//
    74. if ($type==2)
    75. {
    76.         foreach($anglesum_percent[$i-1] as $p) {               
    77.         ImageString($im, $FONT, $square_x+$font_h-1, $dy+$font_h-1, $p, $fontcolor);
    78.         $i++;
    79.         }
    80.                     foreach($value_text as $v) {
    81.                         $dy=$text_y+($i*$font_h);
    82.                         ImageString($im, $FONT, $text_x, $dy, $p, $fontcolor);
    83.                         ImageFilledRectangle($im,
    84.                                              $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
    85.                                              $COLORS[$i+1]);
    86.                         ImageRectangle($im,
    87.                                        $square_x+1,$dy+1,$square_x+$font_h-1,$dy+$font_h-1,
    88.                                        $fontcolor);
    89.                         $i++;
    90.                         }  
    91. }  
    92.     //.................................................//
    93.     //.................................................//
    94.        
    95.     $diametr =-110;
    96.     $circle_x = ($diametr/2)+200;
    97.     //using the height  of the image
    98.     $circle_y = $H/2-10;
    99.  
    100. //correct the diametr
    101.  
    102.     if ($diametr>($H*2)-20) $diametr=($H*2)-80;
    103. //................not...important................................//
    104.     //make a shadow
    105.      
    106.     for ($j=20;$j>0;$j--)
    107.             for ($i=0;$i<count($anglesum)-1;$i++)
    108.             ImageFilledArc($im,$circle_x,$circle_y+$j,
    109.                            $diametr,$diametr/2,
    110.                            $anglesum[$i],$anglesum[$i+1],
    111.                            $SHADOWS[$i],IMG_ARC_PIE);
    112.  
    113. //.................................................//
    114.  
    115. //output the diagramm:
    116.             for ($i=0;$i<count($anglesum)-1;$i++)
    117.             ImageFilledArc($im,$circle_x,$circle_y,
    118.                            $diametr,$diametr/2,
    119.                            $anglesum[$i],$anglesum[$i+1],
    120.                            $COLORS[$i],IMG_ARC_PIE);
    121.  
    122.     }
    123. //.............................................................................................//?>
    124.  


    здесь фаил рисуюший диаграмму:diagramma_2.php
    PHP:
    1.  
    2. <?php
    3.     session_start();
    4.     require_once("config.inc.php");
    5.     connectdb();
    6.     check_admin();
    7.     header("Content-type: image/png");
    8.     $im=ImageCreate(500,500);
    9.     $type=2;
    10.     $header_text="Selbsteinschätzung zu Ihren Kompetenzen - Gesamtüberblick"
    11.     $value_text=("Aktivitäts und Kandlungskompetenz","Fach und Methodenkompetenz","Sozial kommunikative kompetenz","Personale Kompetenz" );
    12.     $value=sprintf("%d",$_SESSION['choice_value']);
    13.     Diagramm($value,$value_text,$header_text,$type);
    14.     ImagePNG($im);
    15.  
    16. ?>
    17.  
    здесь файл выводяший диаграмму на страничку t.e. diagramma.tpl:
    Код (Text):
    1.  
    2.  
    3. <table>
    4. <tr>   
    5. <img src="diagramm_2.php">
    6. </tr>
    7. </table>

    этой функция рисования диаграммы вызываю из нужного места текушей страницы
    PHP:
    1. <?php
    2. function draw_my_diagramm()
    3. {
    4. $smarty = new SmartyFormsess;
    5.  
    6.     if(DEBUG == true) {
    7.         $smarty->compile_check = true;
    8.         $smarty->debugging = true;
    9.     }
    10.     $smarty->display("diagramm.tpl");
    11.    
    12. }?>
    13.  
    ..причина возможно где-то что-то упустила ведь я только закидываю с файла диаграмму и должна опять вернуться текушую страничку...но я где-то вылетаю не знаю где и почему....

    подскажите пожалуйста если что-то увидете не то...но я думаю я не усвоила как именно выводить катинку но вроде сделала все что указано здесь:
    http://www.php.su/functions/?cat=image

    заранее спасибо
     
  2. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    в самое начало скрипта

    ini_set('display_errors','Off');
    ini_set('error_log','On');

    и выкладываем все, что появится в логе ошибок
     
  3. Firuza

    Firuza Активный пользователь

    С нами с:
    7 июн 2007
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    KG
    Абсолютно ничего никаких ошибок такая же картина
    страница отображается нормально но сам скрипт "статистика"-->только значок недосупной картинки и никакой информации(все по прежнему ). если оставить под комментарий саму функцию отображения диаграммы все работает.
    -->код "статистика " работает страница "статистика " .php отображается с соответ. должной информацией , но как туда вставить диаграмму?

    Если вам не трудно вы можете мне написать алгоритм работы вывода изображения сделанного с помошью библиотеки в 2-3 предложениях, а я еше раз просмотрю не забыла чего.
     
  4. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    Firuza
    Поменяйте свою аватару на аватуру с личным фото или удалите, пока модераторы не пришли )
     
  5. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    Firuza
    аватарку на фото поменяйте, или удалите.
     
  6. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    function Diagramm($value,$value_text,$header_text,$type) {
    //siize of the image
    $W=ImageSX($im);
    $H=ImageSY($im);

    а откуда $im берется-то?
     
  7. Firuza

    Firuza Активный пользователь

    С нами с:
    7 июн 2007
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    KG
    а откуда $im берется-то?

    просмотрите пожалуйста скрипт:diagramma_2.php
    там строчка 7- создание $im=ImageCreate(500,500);
     
  8. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    вот я и спрашиваю - откауда функция знает про эту $im?
    ответ - НИОТКУДА.

    идея понятна?
     
  9. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    host
    Hight
    Быстро :)
     
  10. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    host

    пока они писали - я уже удалил...
    =)
     
  11. Firuza

    Firuza Активный пользователь

    С нами с:
    7 июн 2007
    Сообщения:
    4
    Симпатии:
    0
    Адрес:
    KG

    Точно , спасибо, -->вот глупость...нет слов!!!
    хммм .... все равно не нравится не работает, но я еше все проверю хотя после нескольких десятков просмотров вряд ли что-то замечу-->но НАДО....
    спасибо , да я думаю мне стоит перепроверить все глупости такого характера ...