Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Biblioteka GD
Forum PHP.pl > Forum > Przedszkole
kaktus283
Przeczytałem sobie właśnie manual, i tutotrial na temat bibliotek GD no i dość fajna sprawa generowanie dynamicznych obrazków...
Tylko teraz się zastanawiam, bo stworzyłem plik draw.php i on wyświetla w przeglądarce obrazek.
A gdybym chciał go zapisać np. do pliku draw.gif to jak mogę to zrobić, lub jak wyświetlić z rozszerzeniem *.gif?
kapuch
  1. imagegif($obrazek, 'obrazek.gif');
  2. imagejpg($obrazek, 'obrazek.jpg');
  3. // itd
kaktus283
Cytat(kapuch @ 22.07.2010, 01:17:44 ) *
  1. imagegif($obrazek, 'obrazek.gif');
  2. imagejpg($obrazek, 'obrazek.jpg');
  3. // itd

O to własnie chodziło wielkie dzięki : ))

Jeszcze mam pytanie odnośnie tekstu, ustawiłem zmienną
  1. $name = $_GET['name''];
No i gdy wpisze w adresie on mi to wygeneruje ale problem jest taki, że tam gdzie ustalę to on zacznie pisać. Więc przykładowo ustawie, że ma generować się w rogu i przy 5 literach będzie wszystko w porządku, ale jeśli będzie 15 to mi wyjdzie za obrazek. Ja pomyślałem o zrobieniu dodatkowej zmiennej
  1. $size = $_GET['size'];
I zrobiłem kilka if ($size == x). Nie dało by się zamiast tych if ustawić parametru, żeby zamiast zaczynać w tym miejscu to on by tam robił środek...
kapuch
Ciezka z tym sprawa, bo raczej nie mozna zrobic tak, aby rozmiar obrazka dostosowywal sie do dlugosci tekstu, ale ja zawsze radzilem sobie z tym tak:
  1. $width = strlen($_GET['tresc']) * 8 // 8 to przyblizona szerokosc w pikselach jednej litery (zalezy jaki rozmiar czcionki uzyjesz)
  2. imagecreatetruecolor($width, 20);

Moze sa lepsze sposoby, ale ja z biblioteka GD malo romansowalem, wiec tak sobie radzilem.
kaktus283
Powyższy kod nie działa, a chodzi mi o coś takiego pokażę na przykładzie:
Chcę coś takiego:

Jak dopiszę 283, to wychodzi za obrazek:

Jak wpiszę php, to natomiast tekst za krótki jest:


Chodzi mi o ustawienie parametru, żeby napis był wyświetlany do prawego dolnego rogu ale nie wychodził poza obrazek.
kapuch
No to przeciez $width w moim kodzie to przyblizona szerokosc napisu.
Teraz wystarczy odjac od szerokosci obrazka $width ($pozycja_X = $szerokosc_obrazka - $szerokosc_napisu ($width) i w ten sposob masz pozycje X do umiejscowienia napisu.
Jak dobrze skorygujesz ten moj kod, tzn. ja mnoze przez 8, ale mozesz probowac zwiekszyc/zmniejszyc ten mnoznik i wyjdzie calkiem mozliwie.
Wystarczy troche pomyslec winksmiley.jpg

Mozna tez jeszcze uzyc imagefontwidth(font_ktorym_piszesz), zamiast tej 8, wtedy bedzie bardziej dokladnie.
  1. // Plik obrazek_gd.php
  2. $font = 2; // Tutaj mozesz wstawic nazwe uzywanej czcionki jako string.
  3. $szerokosc_obrazka = 300;
  4. $wysokosc_obrazka = 100;
  5. $szerokosc_napisu = strlen($_GET['tresc']) * imagefontwidth($font);
  6. $wysokosc_napisu = imagefontheight($font);
  7. $poz_X = $szerokosc_obrazka - $szerokosc_napisu;
  8. $poz_Y = $wysokosc_obrazka - $wysokosc_napisu;
  9.  
  10. $img = imagecreatetruecolor($szerokosc_obrazka, $wysokosc_obrazka);
  11. $text_color = imagecolorallocate($img, 233, 14, 91);
  12. imagestring($img, $font, $poz_X, $poz_Y, $_GET['tresc'], $text_color);
  13.  
  14. header('Content-type: image/jpeg');
  15. imagejpeg($img);
  16. imagedestroy($img);

Masz gotowca.
PS. Sprawdzone i dziala, z dokladnoscia co do 1px.
Wpisz w adresie (obrazek_gd.php?tresc=Kapuch), lub cos dluzszego i sie przekonaj winksmiley.jpg
kaktus283
Ja coś takiego wymyśliłem, też zaczęło działać ale dokładność słaba : ))
  1. $szer = strlen($_GET['name']) * 7; // 8 to przyblizona szerokosc w pikselach jednej litery (zalezy jaki rozmiar czcionki uzyjesz)
  2. ImageCreateTrueColor($szer, 20);
  3. $war = $width - $szer;
kapuch
Ten ostatni kod, ktory podalem dziala z najlepsza mozliwa dokladnoscia winksmiley.jpg

Cytat
Ciezka z tym sprawa, bo raczej nie mozna zrobic tak, aby rozmiar obrazka dostosowywal sie do dlugosci tekstu, ale ja zawsze radzilem sobie z tym tak:

Cofam te slowa biggrin.gif
Jednak nie taka ciezka jak myslalem, musze zabrac sie kiedys za ta biblioteke, bo do tej pory malo co mi sie przydawala winksmiley.jpg
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.