Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Problem z funkcją imagecreateTrueColor()
henio
post
Post #1





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


  1. <?php
  2. /*********************************************
  3.   Zapytanie bazy danych odczytujące wynik ankiety
  4. *********************************************/
  5. include("admin/funkcje.php");
  6. include("admin/baza.php");
  7.  
  8. // pobranie głosu z formy
  9. @$glos=@$_REQUEST['glos'];
  10.  
  11. if(!empty($glos)) // jeżeli formularz został wypełniony, dodanie głosu
  12. {
  13. $zapytanie="UPDATE sondy_odpowiedzi
  14. set liczba_glosow = liczba_glosow + 1
  15. where odpowiedz = '$glos'";
  16. $wynik = mysqli_query($mysql, $zapytanie) or die('zapytanie: '.$zapytanie.'---blad:'.mysqli_error($mysql));
  17. };
  18.  
  19. // pobranie aktualnych wyników ankiety, niezależnie od faktu głosowania
  20. $zapytanie='select * from sondy_odpowiedzi WHERE id_sonda = ".$id_sonda."';
  21. $wynik = mysqli_query($mysql, $zapytanie) or die('zapytanie: '.$zapytanie.'---blad:'.mysqli_error($mysql));
  22. $ilosc_kandydatow=$wynik->num_rows;
  23.  
  24. // obliczenie całkowitej liczby głosów
  25. $ilosc_glosow=0;
  26. while ($rzad=$wynik->fetch_object())
  27. {
  28. $ilosc_glosow+=$rzad->ilosc_glosow;
  29. }
  30. $wynik->data_seek(0); // wyzerowanie wskaźnika wyniku
  31.  
  32. /*********************************************
  33.   Początkowe obliczenia wykresu
  34. *********************************************/
  35. // ustawienie stałych
  36. putenv('GDFONTPATH=C:WINDOWSFonts');
  37. $szerokosc=500;  //szerokosc obrazka w pikselach - ta zmieści się w rozdzielczości 640x480
  38. $lewy_margines=50; // miejsce pozostawiane po lewej stronie obrazka
  39. $prawy_margines=50; // to samo dla strony prawej
  40. $wysokosc_slupka=40;
  41. $odleglosc_slupkow=$wysokosc_slupka/2;
  42. $czcionka='arial';
  43. $rozmiar_tytulu=16; // w stopniach
  44. $rozmiar_podstawowy=12; // w stopniach
  45. $rozmiar_maly=12; // w stopniach
  46. $wciecie_tekstu=10; //odległość lewych etykiet tekstowych od lewej krawędzi obrazka
  47.  
  48. // ustawienie początkowego punktu rysowania
  49. $x=$lewy_margines+70; //miejsce narysowania bazy wykresu
  50. $y=50; //to samo
  51. $jednostka_slupka=($szerokosc-($x+$prawy_margines))/100; //jeden "stopień" wykresu
  52.  
  53. // obliczenie wysokości wykresu - słupki plus przerwy plus pewien margines
  54. $wysokosc=$ilosc_kandydatow*($wysokosc_slupka+$odleglosc_slupkow)+50;
  55.  
  56. /*********************************************
  57.   Konfiguracja podstawowego obrazka
  58. *********************************************/
  59. // stworzenie pustego kadru
  60. $ob=imagecreateTrueColor($szerokosc, $wysokosc);
  61.  
  62. // Przydzielenie kolorów
  63. $bialy=ImageColorAllocate($ob,255,255,255);
  64. $niebieski=ImageColorAllocate($ob,0,64,128);
  65. $czarny=ImageColorAllocate($ob,0,0,0);
  66. $rozowy=ImageColorAllocate($ob,255,78,243);
  67.  
  68. $kolor_tekstu=$czarny;
  69. $kolor_procentow=$czarny;
  70. $kolor_tla=$bialy;
  71. $kolor_linii=$czarny;
  72. $kolor_slupka=$niebieski;
  73. $kolor_liczb=$rozowy;
  74.  
  75. // stworzenie "kadru" do rysowania
  76. ImageFilledRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_tla);
  77.  
  78. // narysowanie konturów wokół kadru
  79. ImageRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_linii);
  80.  
  81. // dodanie tytułu
  82. $tytul='Wyniki ankiety';
  83. $wymiary_tytulu=ImageTTFBBox($rozmiar_tytulu, 0, $czcionka, $tytul);
  84. $dlugosc_tytulu=$wymiary_tytulu[2]-$wymiary_tytulu[0];
  85. $wysokosc_tytulu=abs($wymiary_tytulu[7]-$wymiary_tytulu[1]);
  86. $tytul_nad_linia=abs($wymiary_tytulu[7]);
  87. $tytul_x=($szerokosc-$dlugosc_tytulu)/2; // wyśrodkowanie w x
  88. $tytul_y=($y-$wysokosc_tytulu)/2+$tytul_nad_linia; // wyśrodkowanie w y
  89. ImageTTFText($ob, $rozmiar_tytulu, 0, $tytul_x, $tytul_y,
  90.  $kolor_tekstu, $czcionka, $tytul);
  91.  
  92. // narysowanie bazy od nieco ponad pozycją pierwszego słupka do nieco 
  93. // poniżej pozycji ostatniego
  94. ImageLine($ob, $x, $y-5, $x, $wysokosc-15, $kolor_linii);
  95.  
  96. /*********************************************
  97.   Umieszczenie danych na wykresie
  98. *********************************************/
  99. // Pobranie każdej linii bazy danych i narysowanie odpowiadających słupków
  100. while ($rzad=$wynik->fetch_object())
  101. {
  102. if($ilosc_glosow>0)
  103. $procent=intval(round(($rzad->ilosc_glosow/$ilosc_glosow)*100));
  104. else
  105. $procent=0;
  106.  
  107. // wyświetlenie procentów dla tej wartości
  108. $wymiary_procentow=ImageTTFBbox($rozmiar_podstawowy, 0, $czcionka, $procent.'%');
  109. $dlugosc_procentow=$wymiary_procentow[2]-$wymiaryprocentow[0];
  110. ImageTTFText($ob,$rozmiar_podstawowy, 0, $szerokosc-$dlugosc_procentow-$wciecie_tekstu,
  111.  $y+($wysokosc_slupka/2), $kolor_procentow, $czcionka, $procent.'%');
  112.  
  113. // długość słupka dla tej wartości
  114. $dlugosc_slupka=$x+($procent*$jednostka_slupka);
  115.  
  116. // narysowanie słupka dla tej wartości
  117. ImageFilledRectangle($ob, $x, $y-2, $dlugosc_slupka, $y+$wysokosc_slupka, 
  118.  $kolor_slupka);
  119.  
  120. // narysowanie tytułu dla tej wartości
  121. ImageTTFText($ob, $rozmiar_podstawowy, 0, $wciecie_tekstu,  
  122.  $y+($wysokosc_slupka/2), $kolor_tekstu, $czcionka, 
  123.  "$rzad->kandydat");
  124.  
  125. // narysowanie konturu pokazującego 100%
  126. ImageRectangle($ob, $dlugosc_slupka+1, $y-2, ($x+(100*$jednostka_slupka)),
  127.  $y+$wysokosc_slupka, $kolor_linii);
  128.  
  129. // wyświetlenie liczb
  130. ImageTTFText($ob, $rozmiar_maly, 0, $x+(100*$jednostka_slupka)-50, 
  131.  $y+($wysokosc_slupka/2), $kolor_liczb, $czcionka, 
  132.  $rzad->ilosc_glosow.'/'.$ilosc_glosow);
  133.  
  134. // przesunięcie do następnego słupka
  135. $y=$y+($wysokosc_slupka+$odleglosc_slupkow);
  136. }
  137.  
  138. /*********************************************
  139.   Wyświetlenie obrazka
  140. *********************************************/
  141. Header('Content=type: image/png');
  142. ImagePNG($ob);
  143.  
  144. /*********************************************
  145.   Zwalnianie zasobów
  146. *********************************************/
  147. ImageDestroy($ob);
  148. ?>

Mam skrypt, który ma mi tworzyć wykres na podstawie danych z sondy.

Wyskakuje mi taki problem:
Fatal error: Call to undefined function imagecreateTrueColor() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 61

Fatal error: Call to undefined function ImageColorAllocate() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 64

Fatal error: Call to undefined function ImageColorAllocate() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 65

Fatal error: Call to undefined function ImageColorAllocate() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 66

Fatal error: Call to undefined function ImageColorAllocate() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 67

Fatal error: Call to undefined function ImageFilledRectangle() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 77

Fatal error: Call to undefined function ImageRectangle() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 80

Fatal error: Call to undefined function ImageTTFBBox() in C:\Program Files\Apache Group\Apache2\htdocs\stronka\pokaz_wyniki.php on line 84

Ten post edytował henio 17.08.2007, 14:58:00
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


W linii 116 masz:
$dlugosc_procentow=$wymiary_procentow[2]-$wymiaryprocentow[0];
Zauważ, że Twoja tablica nazywa się $wymiary_procentow, a nie $wymianyprocentow... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
I radziłbym na przyszłość unikać takich nazw...
A te krzaczki robią się właśnie z tego powodu - wywołuje je funkcja ImagePNG, jeśli nie może wygenerować obrazka z powodu błędu we wcześniejszej części skryptu.
Spróbuj sobie użyć ImagePNG na jakiejś dowolnej zmiennej, to zobaczysz.

Ten post edytował Hazel 17.08.2007, 16:40:54
Go to the top of the page
+Quote Post
henio
post
Post #3





Grupa: Zarejestrowani
Postów: 237
Pomógł: 1
Dołączył: 15.10.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


Cytat(Hazel @ 17.08.2007, 15:16:19 ) *
W linii 116 masz:
$dlugosc_procentow=$wymiary_procentow[2]-$wymiaryprocentow[0];
Zauważ, że Twoja tablica nazywa się $wymiary_procentow, a nie $wymianyprocentow... (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
I radziłbym na przyszłość unikać takich nazw...
A te krzaczki robią się właśnie z tego powodu - wywołuje je funkcja ImagePNG, jeśli nie może wygenerować obrazka z powodu błędu we wcześniejszej części skryptu.
Spróbuj sobie użyć ImagePNG na jakiejś dowolnej zmiennej, to zobaczysz.

Wielkie dzięki. Ale ja byłem głupi, że tego nie zauważyłem.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 17:37