Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z GD
thomson89
post
Post #1





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


Witam!

Mam kod, z książki o php.

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


Troszku zmieniony bo był błąd invalid font name.

Zwraca zamiast obrazka, dwie strony jakiegoś gówna

Kod
wf<^Ż×Žűłeߝš{w~{Î=Ż{W03Ô0›a|بaڍQ8ëQŁpÖŁFᬇ5Ăëľ5ÄĚ5łčX!„BčĆLú™&…DDDJ)ĽE˜É8>†0  ó˜)DD)Ľ”2…HD,&


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
wookieb
post
Post #2





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




Content-type a nie Content_type


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





Grupa: Zarejestrowani
Postów: 1 178
Pomógł: 51
Dołączył: 7.01.2009
Skąd: Gdańsk

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


No, teraz działa. Ale pojawił się inny problem.

Jak kopiuje plik, do innego folderu na serwerze obrazek się nie generuje! O co w tym chodzi?


--------------------
Sklep 70%
Go to the top of the page
+Quote Post
wookieb
post
Post #4





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




Zakomentuje header i imagepng, włącz pełne wyświetlania błędów i pogadamy.


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





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

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


A pliki, z których tworzysz obrazek też zostały przeniesione? Ew. sprawdź ścieżkę.


--------------------
manual mmocenter
Nie pomagam na PW!
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 - 20:35