Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Problem z generowanie obrazka
Forum PHP.pl > Forum > Przedszkole
erjot90
Witam przerabiam właśnie książke "PHP i MySQL tworzenie stron www Vademecum profesionalisty"
i nie wiem może ja robię coś źle albo w książce są błędy :/

Mianowicie chodzi o skrypt który po wypełnieniu formularza tworzy przycisk.
Formularz jest bardzo prosty pyta sie tylko o napis który będzie na przycisku i o kolor tego przycisku.
Formularz wypełniam poprawnie ale i tak jest błędy w skrypcie PHP sad.gif

Warning: imagettfbbox() [function.imagettfbbox]: Invalid font filename in C:\wamp\www\rozdzial_21\tworz_przycisk.php on line 42

Warning: imagettftext() [function.imagettftext]: Invalid font filename in C:\wamp\www\rozdzial_21\tworz_przycisk.php on line 78

a oto skrypt:
  1. <?php
  2. // sprawdzenie, czy dost�pne s� odpowiednie dane zmiennych
  3. // zmienne to tekst_przycisku oraz kolor
  4.  
  5. $tekst_przycisku = $_REQUEST['tekst_przycisku'];
  6. $kolor = $_REQUEST['kolor'];
  7.  
  8. if((empty($tekst_przycisku) || empty($kolor)) || (!($kolor=='czerwony' || $kolor=='niebieski' || $kolor=='zielony')))
  9. {
  10. echo 'Stworzenie obrazka niemo�liwe - formularz wype�niony niepoprawnie';
  11. }
  12.  
  13. // utworzenie obrazka o prawid�owym tle oraz sprawdzenie wielko�ci
  14. $ob = ImageCreateFromPng($kolor.'-przycisk.png');
  15. if (!$ob)
  16. {
  17. echo 'Stowrzenie obrazka nie powiod�o si�.';
  18. }
  19.  
  20. $szerokosc_obrazka = ImageSX($ob);
  21. $wysokosc_obrazka = ImageSY($ob);
  22.  
  23. // przyciski musz� mie� 18-pikselowy margines od kraw�dzi
  24. $szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (2 * 18);
  25. $wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (2 * 18);
  26.  
  27. // Obliczenie pasuj�cego rozmiaru czcionki i odpowiednie jego zmniejszenie
  28. // Rozpocz�cie od najwi�kszego rozmiaru, kt�ry intuicyjnie pasowa�by do przycisk�w
  29. $rozmiar_czcionki = 33;
  30.  
  31. // Trzeba wskaza� GD2, gdzie znajduj� si� czcionki
  32. putenv('GDFONTPATH=C:\WINDOWS\Fonts');
  33. $nazwa_czcionki = "arial";
  34.  
  35. do
  36. {
  37. $rozmiar_czcionki--;
  38.  
  39. //obliczenie rozmiaru tekstu przy tym rozmiarze czcionki
  40. $bbox=ImageTTFBbox($rozmiar_czcionki, 0, $nazwa_czcionki, $tekst_przycisku);
  41.  
  42. $tekst_prawy = $bbox[2]; //prawa wsp�rz�dna
  43. $tekst_lewy = $bbox[0]; //lewa wsp�rz�dna
  44. $szerokosc_tekstu = $tekst_prawy - $tekst_lewy; // jaki szeroki?
  45. $wysokosc_tekstu = abs($bbox[7] - $bbox[1]); // jaki wysoki?
  46.  
  47. } while($rozmiar_czcionki > 8 &&
  48. ($wysokosc_tekstu > $wysokosc_obrazka_bez_marginesow ||
  49. $szerokosc_tekstu > $szerokosc_obrazka_bez_marginesow)
  50. );
  51.  
  52. if($wysokosc_tekstu>$wysokosc_obrazka_bez_marginesow ||
  53. $szerokosc_tekstu>$szerokosc_obrazka_bez_marginesow)
  54. {
  55. // �aden mo�liwy do odczytania rozmiar czcionki nie pasuje
  56. echo 'Wprowadzony tekst nie pasuje do przycisku.<br />';
  57. }
  58. else
  59. {
  60. // odnaleziono pasuj�cy rozmiar czcionki
  61. // teraz nale�y obliczy� jego wsp�rz�dne
  62.  
  63. $tekst_x=$szerokosc_obrazka/2.0 - $szerokosc_tekstu/2.0;
  64. $tekst_y=$wysokosc_obrazka/2.0 - $wysokosc_tekstu/2.0;
  65.  
  66. if ($tekst_lewy < 0)
  67. $tekst_x += abs($tekst_lewy); //Dodanie wsp�czynnika do lewej pozycji
  68. $nad_linia_tekstu=abs($bbox[7]); // jak wysoko nad podstaw�?
  69. $tekst_y+=$nad_linia_tekstu; //dodanie wsp�czynnika podstawy
  70.  
  71. $tekst_y-=2; // wsp�czynnik dostosowania do kszta�tu szablonu
  72.  
  73. $bialy=ImageColorAllocate($ob, 255, 255, 255);
  74.  
  75. ImageTTFText($ob, $rozmiar_czcionki, 0, $tekst_x, $tekst_y, $bialy, $nazwa_czcionki,
  76. $tekst_przycisku);
  77.  
  78. Header('Content_type: image.png');
  79. ImagePNG($ob);
  80. }
  81.  
  82. ImageDestroy($ob);
  83. ?>

Proszę o pomoc smile.gif
nospor
przeciez komunikat bledy wyraźnie ci napisał co masz źle....

trzecim parametrem dla ImageTTFBbox() jest nazwa pliku. podales nazwe pliku? Nie!

http://pl.php.net/manual/pl/function.imagettfbbox.php
polecam lekture podanych tam przykladow
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.