Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykresy generowane ze zmiennych
Forum PHP.pl > Forum > PHP
Fibolg
Zastanawiam się teraz nad metodą generowania wykresów bądź to słupkowych, bądź liniowych może nawet kolistych...? Za pomocą czego je robicie? Biblioteka GD? Mógłby ktoś zarzucić jakimś prostym przykładem bo narazie z tą biblioteką jestem na poziomie "Hello World" smile.gif
tiraeth
  1. <?php
  2. // Słupkowy wykres dziewięcioelementowy, zapełniony losowymi wartościami
  3.  
  4. srand(time());
  5. for($i=0; $i<10; $i++) { $liczby[$i] = rand()%10; }
  6.  
  7. header(&#092;"Content-type: image/gif\");
  8.  
  9. // Tworzymy obrazek, tło naszego wykresu; może to być np. plik jpg
  10. $rysunek = imagecreate(100, 100);
  11.  
  12. // Tworzymy kolory: biały i czerwony
  13. $kolor_b = imagecolorallocate($rysunek, 255, 255, 255);
  14. $kolor_c = imagecolorallocate($rysunek, 0, 0, 0);
  15.  
  16. // Wypełniamy obrazek białym kolorem
  17. imagefill($rysunek, 0, 0, $kolor_b);
  18.  
  19. for($i=0; $i<10; $i++)
  20. {
  21. $kolor_slupka = imagecolorallocate($rysunek, 25*$i, 25*$i, 0);
  22. imagefilledrectangle($rysunek, $i*10+3, 90-$liczby[$i], $i*10+7, 90, $kolor_slupka);
  23. imagestring($rysunek, 1, 3+$i*10, 91, $liczby[$i], $kolor_c);
  24. }
  25.  
  26. // Wywalamy rysunek tongue.gif
  27. imagegif($rysunek);
  28. ?>


Na podstawie książki pt. PHP4: Ćwiczenia praktyczne (wyd. Helion)

smile.gif

poprawiono błędy tongue.gif
Fibolg
Już po poprawieniu tego Twojego skryptu (połknąłeś nawias i jedną zmienną) cały czas błąd:
Cytat
<b>Fatal error</b>:  Call to undefined function:  imagecollorallocate()

Już dawno z tej książki nie korzystałem winksmiley.jpg Może jakieś inne pomysły - na większe projekty? Może wykresy liniowe?
rogrog
Cytat(Fibolg @ 2004-12-06 21:24:59)
Cytat
<b>Fatal error</b>:  Call to undefined function:  imagecollorallocate()

powinno być przez jedno l: imagecolorallocate

Cytat(Tiraeth)
  1. <?php
  2.  
  3. srand(time());
  4. ?>

Cytat(manual: srand)
Notatka: Począwszy od php 4.2.0, nie trzeba już inicjować generatora liczb losowych przed użyciem.
tiraeth
Sorki ale to z pośpiechu smile.gif tongue.gif Już poprawiam kod...

@rogrog: a skąd wiesz jaką wersję php ma autor tematu ? snitch.gif
Fibolg
Teraz z kolei
Cytat
<b>Fatal error</b>:  Call to undefined function:  imagegif()

W tej chwili sprawdzam to na krasnalu 2.7 czyli 4.3.9 oraz 5.02 winksmiley.jpg
tiraeth
No to już wiemy czemu nie dzioba tongue.gif

Walnij phpinfo() i sprawdź wersję GD.... do imagegif musi być minimum 2.0

możesz też zrobić tak:

Zamień header("Content-type: image/gif") na header("Content-type: image/png")
Zamień imagegif($rysunek) na imagepng($rysunek)

Spowoduje to wywalenie pliku jako PNG a nie GIF smile.gif

Ale zalecam zainstalowanie GD2+ tongue.gif
rogrog
Cytat(Tiraeth @ 2004-12-06 21:34:07)
@rogrog: a skąd wiesz jaką wersję php ma autor tematu ?

hehe Tiraeth... nie powiedziałem że to źle, tylko zwróciłem uwagę, że manual mówi że od 4.2 nie musi tego być winksmiley.jpg
Fibolg
UUU miiiist ;P

Cytat
GD Version  bundled (2.0.15 compatible) 

Wszystkie opcje enabled. Działałem już na GD ale na plikach png i te rzeczywiście działają, ale nie jest to chyba wina biblioteki, skoro ta jest 2.0 prawda?



Można dopytać który to skrypt w książce bo nie mogę znaleźć? smile.gif
tiraeth
str. 111-112 (mój skrypt zmieniony tongue.gif)

btw. No to zmien gif na png i tyle smile.gif
rogrog
Cytat(manual: imagegif)
Notatka: Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library.


Co oznacza że w wersjach GD wyższych niż 1.6 nie ma obsługi GIF.

AFAIR, z formatem GIF były jakieś problemy licencyjne, firma która jest właścicielem patentu kazała sobie słono płacić autorom oprogramowania generującego pliki w formacie GIF, więc z darmowego php zostało to usunięte. Do GD v.>1.6 można chyba dołączyć generowanie GIF, ale trzeba oddzielnie opłacić licencję.
Leezard
witka wszystkim

wracajac do tematu, znaczy sposobow generowania wykresow, to ja osobiscie uzywam PHPlot
Bardzo fajny, prosty sposob tworzenia baaaardzo roznych wykresow
Fibolg
No w sumie to nie takie proste jest żeby zmienić png na gifa winksmiley.jpg ale dzięki za wyjaśnienie sprawy z tą GD. Wiecie może jeszcze dlaczego jak wgrywam na płatny serwer skrypt się wykonuje, wszystko jest ok itd ale nie może zapisać obrazka na dysku? Pozdrawiam
phpion.thc.net.pl
Na twoim dysku czy na serwerze? :) <hahaha>
Fibolg
@phpion.thc.net.pl, ale żem się uśmiał smile.gif Na dysku serwera
tiraeth
Cytat("rogrog")
Co oznacza że w wersjach GD wyższych niż 1.6 nie ma obsługi GIF.


rog.... kolejny nie wypał smile.gif

Cytat("EN")
Notatka: Since all GIF support was removed from the GD library in version 1.6, this function is not available if you are using that version of the GD library.


Cytat("PL")
Obsługa GIF w bibliotece GD w wersji 1.6 jest nie dostępna, ta funkcja nie będzie dostępna jeżeli będziesz korzystać z tej wersji biblioteki.


Mam pytanie co masz z Angielskiego..... bo Twoje 'spolszczanie' textów nadaje się do działu OffTopic: Englisz baj rogrog........


Zainstaluj GD w wersji 2
Fibolg
Cytat
Zainstaluj GD w wersji 2

Przecież pisałem, że mam wersję 2 :/

@Vengeance, dzięki za artykuł, ale myślę, że jednak ładniej prezentują się dobrze zrobione wykresy za pomocą GD. Takie już daaaawno robiłem winksmiley.jpg Macie może pomysł jakiś jak rozwiązać sprawę wykresów liniowych bądż też kolistych?
rogrog
Cytat(Tiraeth @ 2004-12-07 15:58:26)
Mam pytanie co masz z Angielskiego..... bo Twoje 'spolszczanie' textów nadaje się do działu OffTopic: Englisz baj rogrog........

no moj ulubiony Tiraeth tongue.gif

ok przyznaje sie do bledu - nie popatrzylem dokładnie a napisałem to co kiedyś tam czytałem.

a z angielskiego mam 6
Fibolg
Ja widzę że wy po prostu powinniście iść raz usiąść i spić piankę z piwka razem winksmiley.jpg To ile już jest w "przyznawaniu się"? smile.gif
phpion.thc.net.pl
Ja jeszcze wroce do zapisu obrazka 'na dysku' - nie sprecyzowales... przeciez ktos mogl sie rzucac ze mu sie na jego kompie po prostu nie zapisuje :P hehehe Dlatego grzecznie spytal o co Ci chodzi.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.