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

Posty w temacie


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

 



RSS Aktualny czas: 22.08.2025 - 22:05