Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Skrypt tworzący przycisk., Nie wiem w czym problem.
Vill
post
Post #1





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 22.05.2009

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


W książce z której się uczę jest skrypt tworzący przycisk, który nie działa. Biblioteka GD2 jest chyba prawidłowo zainstalowana bo wszystkie funkcje działają, nie wyskakują żadne błędy, ale zamiast stworzyć przycisk pojawia się ciąg znaków typu:

�PNG  ��� IHDR��ô���ć���ŹÝŕů�� �IDATx�íÝ�TTuţ?đ×˝ "żů��2)¸��d¨D�ë!�fiR��ë��K,!K4K¸š|�ü�q0ů"ëQą�ă "ql�%"ó!đqŃDEFÄ��űýăć4Â` t{>�Ěźßď{ß/Žđ�;ď;r���@p

Oto skrypt: (tekst i kolor przycisku wypełnia się wcześniej w formularzu).

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


Co może być nie tak?
Korzystam z Wampa (Apache 2.2.11, php 5.2.9)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Nie pokazałeś jak wywolujsz ten skrypt. Powinno sie tak

Kod
<img src="twoj_skrypt.php?tekst_przycisku=tekst&kolor=kolor" alt=""/>


--------------------
Go to the top of the page
+Quote Post
lewy87r
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 10.05.2008

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


ustawienia serwera ? u mnie np na localu nie moge pdf-a otwierac ;] tylko wysweitla sie blad i wywala mi krzaczki ;]
Go to the top of the page
+Quote Post
ayeo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!

Co to niby ma być? tongue.gif
  1. <?php
  2. Header('Content_type: image.png');
  3. ?>


Statystycznie jest dużo większ szansa, że zadziała takie coś:
  1. <?php
  2. header('Content-Type: image/png');
  3. ?>


Pozdrawiam!


--------------------
Go to the top of the page
+Quote Post
Vill
post
Post #5





Grupa: Zarejestrowani
Postów: 62
Pomógł: 0
Dołączył: 22.05.2009

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


Tak było w książce tongue.gif

Teraz działa dzięki smile.gif
Go to the top of the page
+Quote Post

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: 21.08.2025 - 08:15