Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dynamiczna Grafika
Forum PHP.pl > Forum > PHP
WebKing
Witam mam pytanie jak wygenerować grafikę za pomocą php w której tylko będzie napis bez tła i innych rzeczy a szerokość obrazu ustalała długość wyrazu na przykład gen.php?tekst=123456789 no i liczby 123456789 będą szerokością a wysokość będzie już ustalona w pliku. Z góry dziękuje za odpowiedź
wrzasq
http://www.php.net/manual/en/ref.image.php
WebKing
Nigdzie nie piszą opisanego pytania angrysmiley.gif
Mordoran
Obslugujac taki plik: gen.php?tekst=123456789
  1. <?php
  2. $szerokosc = $_GET['tekst']; // pobranie z url'a parametru
  3. $wysokosc = 200; // to co sam ustawiasz
  4. header("Content-type: image/png"); // dane dla przegladarki jak wyswietlac zawartosc ktora przyjdzie ze skryptu
  5. $im = @imagecreate($szerokosc, $wysokosc) or die ("Brak biblioteki GD");
  6. $background_color = imagecolorallocate($im, 255, 255, 255); // ustalenie koloru tla na bialy
  7. $text_color = imagecolorallocate($im, 0, 0, 0); // tekst koloru czarnego
  8. imagestring($im, 5, 0, 0, $szerokosc, $text_color); //wypisanie tekstu na obrazku (zmienna $szerokosc z tego co zrozumielem ma tez byc tekstem co wyswietla si
    e
  9. imagepng($im); // wysylamy obrazek do przegladarki
  10. imagedestroy($im); // zwalnieamy zasoby
  11. ?>


Poczytaj:
http://www.nethut.pl/artykul/108/all
http://www.google.com/search?q=php+generowanie+obrazka
WebKing
Dzięki za skrypt ale wyświetla się http://adres.strony.pl/gen.php?tekst=123456789 tylko to i nic więcejMyślę że problem stanowi $_GET a dokładnie chciałbym zrobić coś takiego że jak wpisze gen.php?tekst=damian to długość tego wyrazu będzie stanowiła szerokość oraz wyświetlany tekst
wrzasq
tak sie zastanawiam - ty tylko przeklejasz kod, bez zadnego zastanawiania sie nad tym, co ten kod w ogole robi?

oblicz sobie szerokosc obrazka stosujac strlen($_GET['tekst']) * $szerokoscJednegoZnaku, a szerokosc jednego znaku jest stala w przypadku czcionek uzywanych przez imagestring(), musisz tylko sprawdzic jaka jest w twoim przypakdu, dla czcionki to chyba 8 pixeli.
Mordoran
Poszukalem z archiwum moich skryptow i znalazlem to co chcesz ;]
  1. <?php
  2. // sprawdzenie, czy dostępne sa odpowiednie dane zmiennych
  3. // zmienne to tekst_przycisku oraz kolor
  4.  
  5. $tekst_przycisku = $_GET['tekst'];
  6. $tryb = $_GET['tryb'];
  7.  
  8. if(empty($tekst_przycisku)) {
  9. $tekst_przycisku = '';
  10. }
  11.  
  12. // utworzenie obrazka o prawidłowym tle oraz sprawdzenie wielkosci
  13. if ('over' == $tryb) {
  14. $ob = imagecreatefromgif('./img/buton_over.gif');
  15. } elseif ('on' == $tryb) {
  16. $ob = imagecreatefromgif('./img/buton_on.gif');
  17. } else {
  18. $ob = imagecreatefromgif('./img/buton_out.gif');
  19. }
  20.  
  21.  
  22. $szerokosc_obrazka = ImageSX($ob);
  23. $wysokosc_obrazka = ImageSY($ob);
  24.  
  25. // przyciski musza mieć 4-pikselowy margines od krawędzi
  26. $szerokosc_obrazka_bez_marginesow = $szerokosc_obrazka - (* 4); // 4 to margines
  27. $wysokosc_obrazka_bez_marginesow = $wysokosc_obrazka - (* 4); // 4 to margines
  28.  
  29. // Obliczenie pasujacego rozmiaru czcionki i odpowiednie jego zmniejszenie
  30. // Rozpoczęcie od największego rozmiaru, który intuicyjnie pasowałby do przycisków
  31. $rozmiar_czcionki = 12;
  32.  
  33. // Trzeba wskazać GD2, gdzie znajdujš się czcionki
  34.  
  35. $nazwa_czcionki = 'tahoma.ttf'; // muszisz miec plik z czcianka w folderze gdzie jest skrypt
  36.  
  37. do
  38. {
  39. $rozmiar_czcionki--;
  40.  
  41. //obliczenie rozmiaru tekstu przy tym rozmiarze czcionki
  42. $bbox=imagettfbbox($rozmiar_czcionki, 0, $nazwa_czcionki, $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 pasujacy rozmiar czcionki
  63. // teraz należy obliczyć jego współrzędne
  64.  
  65. $tekst_x=$szerokosc_obrazka/2.- $szerokosc_tekstu/2.0;
  66. $tekst_y=$wysokosc_obrazka/2.- $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 podstawa?
  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, $nazwa_czcionki,
  78.  $tekst_przycisku);
  79.  
  80. Header('Content_type: image/png');
  81. ImagePNG($ob);
  82. }
  83.  
  84. ImageDestroy($ob);
  85. ?>

Tylko ze ja pobieram "tlo" na podstawie istniejacego obrazka. i jak tekst sie nie zmiescie na obrazku to wyswietli sie "Wprowadzony tekst nie pasuje do przycisku". Ale mysle ze poradzisz sobie z przerobieniem tego
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.