Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [gd]kolejny problem
Forum PHP.pl > Forum > Przedszkole
Lejto
Miałem przeniesienie z serwera na 2 serwer i mam problem z rysowaniem wykresu w GD. Na poprzednim serwerze wszystko działało. Teraz jak odpalam wykres to taki błąd pokazuje:
Cytat
Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in /home/glosowanie.php on line 101

Czego on dotyczy wszyscy wiemy. Ścieżki mam poprawne
  1. <?php
  2. putenv('GDFONTPATH=fonts/');
  3. $czcionka = 'arial';
  4. ?>

Czy może serwer ma własny katalog z fontami?
ayeo
Wystarczy, żę wrzucisz plik z fontami do tego samego katalogu co skrypt. Jednak spróbuj napisać 'arial.ttf' zamiast 'arial'
Pozdrawiam!
Lejto
jak robie z rozszerzeniem .ttf to pokazuje błąd
Cytat
Warning: imagettfbbox() [function.imagettfbbox]: Could not find/open font in /home/virtualki/40815/glosowanie.php on line 128

robie tak
  1. <?php
  2. putenv('GDFONTPATH=/');
  3. ?>

font i skrypt mam w głównym katalogu i tez nie działa
ayeo
Skopiuj jeszcze plik arial.ttf do katalogu ze skryptem winksmiley.jpg
Lejto
no kopiowałem już wczesniej
ayeo
a to putenv('GDFONTPATH=fonts/'); usunąłeś?
Lejto
tak, zrobiłem
  1. <?php
  2. putenv('GDFONTPATH=/');
  3. ?>
ayeo
Pokaż cały kod
Lejto
  1. <?php
  2. /* (c) Lukasz Ogan, 2008 : All Rights Reserved */ 
  3.  
  4.  $glosow=$_POST['glosow'];
  5.  
  6. $sql = "select * from nauczyciel";
  7. $query = mysql_query($sql); 
  8.  
  9. $glosow=addslashes($glosow);
  10. $zapytanie="update nauczyciel
  11. set glosow = glosow + 1
  12. where blefer = '$glosow'";
  13. mysql_query($zapytanie) or die ("nie moge wykonać zapytania");
  14.  
  15.  
  16.  
  17. // pobranie aktualnych wynikw anikiety,niezaleznie od faktu glosania
  18.  
  19. $zapytanie = 'select * from nauczyciel';
  20. $wynik = mysql_query($zapytanie) or die ("Blad");
  21.  
  22. $blefer = mysql_num_rows($wynik) or die("Blad w lini 31");
  23.  
  24. //obliczanie calkowitej ilosci glosw
  25. $ilosc_glosow = 0;
  26.  
  27. while ($rzad = mysql_fetch_object($wynik))
  28. {
  29.  
  30. $ilosc_glosow += $rzad->glosow;
  31. }
  32.  
  33. mysql_data_seek($wynik, 0); // wyzerowanie wskaznika wyniku
  34.  
  35. /*****************************
  36. Poczatkowe obliczanie wykresu
  37. *****************************/
  38.  
  39. //ustawienia stalych
  40.  
  41. putenv('GDFONTPATH=/');
  42. $szerokosc = 500; //szerokosc obrazka w pikselach - ta zmiesci sie w przdzielczkosci
  43. $lewy_margines = 50; //miejsce pozostawione po lewej stronie obrazka
  44. $prawy_margines = 50; // to stamo dla prawej
  45. $wysokosc_slupka = 30;
  46. $odleglosc_slupkow = $wysokosc_slupka/2;
  47. $czcionka = 'arial';
  48. $rozmiar_tytulu = 16; //w stopniach
  49. $rozmiar_podstawowy = 11; //w stopniach
  50. $rozmiar_maly = 12; //w stopniach
  51. $wciecie_tekstu = 10; //odleglosc lewych etykiet tekstowych od lewej krawedzi obrazka
  52.  
  53.  
  54. //ustawienie poczatkowego punktu rysowania
  55. $x = $lewy_margines+70; //miejsce rysowania bazy wykresu
  56. $y = 50; //to samo
  57. $jednostka_slupka = ($szerokosc-($x+$prawy_margines))/100; //jeden "stopien" wykresu
  58.  
  59. //obliczanie wysokosci wykresu - slupki plus przerwy plus pewien margines
  60. $wysokosc = $blefer*($wysokosc_slupka+$odleglosc_slupkow)+50;
  61.  
  62.  
  63. /****************************************
  64. Konfiguracja podstawowego obrazka
  65. ****************************************/
  66.  
  67. //stworzenie pustgo kadru
  68.  
  69. $ob=imagecreateTrueColor($szerokosc, $wysokosc);
  70.  
  71. // Przydzielenie kolorw
  72. $bialy=ImageColorAllocate($ob,255,255,255);
  73. $niebieski=ImageColorAllocate($ob,0,64,128);
  74. $czarny=ImageColorAllocate($ob,0,0,0);
  75. $rozowy=ImageColorAllocate($ob,255,78,243);
  76.  
  77. $kolor_tekstu=$czarny;
  78. $kolor_procentow=$czarny;
  79. $kolor_tla=$bialy;
  80. $kolor_linii=$czarny;
  81. $kolor_slupka=$niebieski;
  82. $kolor_liczb=$rozowy;
  83.  
  84. //stworzenie "kadru" do rysowania
  85.  
  86. ImageFilledRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_tla);
  87.  
  88. //narysowanie kontuwrw wokl kadru
  89. ImageRectangle($ob,0,0,$szerokosc-1,$wysokosc-1,$kolor_linii);
  90.  
  91. //dodanie tytulu
  92.  
  93. $tytul = 'Wyniki głosowania';
  94. $wymiary_tytulu = imagettfbbox($rozmiar_tytulu, 0, $czcionka, $tytul);
  95. $dlugosc_tytulu = $wymiary_tytulu[2]-$wymiary_tytulu[0];
  96. $wysokosc_tytulu = abs($wymiary_tytulu[7]-$wymiary_tytulu[1]);
  97. $tytul_nad_linia = abs($wymiary_tytulu[7]);
  98. $tytul_x = ($szerokosc-$dlugosc_tytulu)/2; //wysrodkowanie w x 
  99. $tytul_y = ($y-$wysokosc_tytulu)/2+$tytul_nad_linia; //wysrodkowanie w y
  100. ImageTTFText($ob, $rozmiar_tytulu, 0, $tytul_x, $tytul_y, $kolor_tekstu, $czcionka, $tytul);
  101.  
  102. // narysowanie bazy od nieco ponad pozycja pierwszego slupka do nieco ponizej pozy
    cji ostatniego
  103.  
  104. ImageLine($ob, $x, $y-5, $x, $wysokosc-15, $kolor_linii);
  105.  
  106. /*******************************
  107. Umieszczanie danych na wykresrie
  108. ********************************/ 
  109.  
  110. // pobranie kazdej lini bazy danych i naryowanie odpowiednich slupkw
  111.  
  112. while ($rzad = mysql_fetch_object($wynik))
  113. {
  114. if($ilosc_glosow > 0)
  115.  $procent = intval(round(($rzad->glosow/$ilosc_glosow)*100));
  116. else
  117.  $procent = 0;
  118.  
  119. // wyswietlanie procentw dla tej wartosci
  120. $wymiary_procentow = imagettfbbox($rozmiar_podstawowy, 0, $czcionka, $procent. '%');
  121. $dlugosc_procentow = $wymiary_procentow[2]-$wymiary_procentow[0];
  122. imagettftext($ob, $rozmiar_podstawowy, 0, $szerokosc-$dlugosc_procentow-$wciecie_tekstu, $y+($wysokosc_slupka/2), $kolor_procentow, $czcionka, $procent. '%');
  123.  
  124. //dlugosc slupka dla tej wartosci
  125. $dlugosc_slupka = $x+($procent*$jednostka_slupka);
  126. //narysowanie slupka dla tej wartosci
  127. ImageFilledRectangle($ob, $x, $y-2, $dlugosc_slupka, $y+$wysokosc_slupka, $kolor_slupka);
  128. //narysowanie tytulu dla tej wartosci
  129. ImageTTFText($ob, $rozmiar_podstawowy, 0, $wciecie_tekstu, $y+($wysokosc_slupka/2), $kolor_tekstu, $czcionka, "$rzad->blefer");
  130. //narysowanie konturu pokazujacego 100%
  131. ImageRectangle($ob, $dlugosc_slupka+1, $y-2, ($x+(100*$jednostka_slupka)), $y+$wysokosc_slupka, $kolor_linii);
  132. //wyswietlanie liczb
  133. ImageTTFText($ob, $rozmiar_maly, 0, $x+(100*$jednostka_slupka)-50, $y+($wysokosc_slupka/2), $kolor_liczb, $czcionka, $rzad->glosow. '/'.$ilosc_glosow);
  134. // przesuniecie nastepnego slupka
  135. $y = $y+($wysokosc_slupka+$odleglosc_slupkow);
  136. }
  137. /******************************************
  138. Wyswitlanie obrazka!
  139. ******************************************/
  140. Header('Content-type: image/png');
  141. ImagePNG($ob);
  142. /******************************************
  143. Zwalnianie zasobw
  144. ******************************************/
  145. imagedestroy($ob);
  146.  
  147.  
  148.  
  149. ?>
ayeo
U mnie jak zmienię na arial.ttf i dodam plik do katalogu to działa!


Mogę dać nawet screenshota winksmiley.jpg
Lejto
a u mnie nie działa pokazuje taki błąd jak wstawię rozszerzenie:
Cytat
Warning: imagettfbbox() [function.imagettfbbox]: Could not find/open font in /home/virtualki/40815/glosowanie.php on line 100


Cytat
dodam plik do katalogu to działa!

chodzi ci o font na serwerze w głównym katalogu?
ayeo
Do katalogu, w którym masz ten skrypt...
Lejto
no tak robie i nie działa
edit: napisałem do admina, admin ustawił font i jest ok
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.