Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: gd kolorowy tekst na obrazku
Forum PHP.pl > Forum > PHP
nospor
Hejka, mam taki kod:
  1. header("Content-Type: image/png");
  2. $im = imagecreate(310, 320);
  3. $background_color = imagecolorallocate($im, 255, 255, 255);
  4. $fontPath = 'sciezka/do/tahoma.ttf'; //plik ttf do ściągniecia z <a href="http://nospor.pl/tahoma.ttf" target="_blank">http://nospor.pl/tahoma.ttf</a>
  5.  
  6. $im_1 = imagecreatefromjpeg('http://nospor.pl/element_2_m.jpg');
  7. $text_color = imagecolorallocate($im_1, 255, 0, 0);
  8. imagettftext($im_1, 10, 0, 10, 20, $text_color, $fontPath, 'Test1');
  9. imagecopyresampled($im , $im_1 , 0 , 0 , 0 , 0 , 198 , 108 , 198 , 108 );
  10.  
  11.  
  12. $im_2 = imagecreatefromjpeg('http://nospor.pl/element_2_m.jpg');
  13. $text_color = imagecolorallocate($im_2, 0, 0, 255);
  14. imagettftext($im_2, 10, 0, 10, 20, $text_color, $fontPath, 'Test2');
  15. imagecopyresampled($im , $im_2 , 0 , 150 , 0 , 0 , 198 , 108 , 198 , 108 );
  16.  
  17.  
  18. imagepng($im);
  19. imagedestroy($im);

Kod ten powinien wygenerować obraz na którym wgrane są dwa jpg a na tych jpg teksty w różnych kolorach.
Pierwszy tekst jest koloru czerwonego, drugi niebieskiego. I tu pojawia się problem. Pierwszy czerwony jest ok, niestety drugi niebieski nie jest niebieski tylko jakby kolorem wynikowym czerwonego z niebieskim.

Zauważyłem, że wszystko jest ok, gdy ładuję mniejsze obrazki i na nie nakładam tekst (np. plik element_2_n.jpg). Wniosek z tego nasuwa sie więc jeden - skoro na większym obrazku nie działa, to tak jakby brakowało pamięci lub coś w ten deseń. Jak temu zaradzić? Napewno nie chodzi o pamięć przeznaczoną na skrypt php, bo tej jest pod dostatkiem.
prowseed
To może wyrzuć sobie obrazek po pierwszym nałożeniu i nałóż drugi tekst w drugiej rundzie?
Ew zamiast wypluwać go bezpośrednio spróbuj w funkcji imagepng zapisać go do pliku i później wypluć przez fpassthru.
Jak duże są te obrazki? Rozmiar jaki zajmuje obraz w pamięci nie koniecznie musi się równać rozmiarowi na dysku, na wszelki wypadek sprawdz z wartoscia powyzej 512M : )
maly_swd
imagecreatetruecolor - zamiast imagecreate (powinno pomoc).

Poniewaz przy tym pierwszym chyba robi sie paleta indexowana.

Kshyhoo
Przy tworzeniu:
  1. $im = imagecreatetruecolor(310, 320);
  2. imagealphablending($im, false);
  3. imagesavealpha($im, true);

ale będzie przezroczysty...
Przy zapisie:
  1. imagealphablending($im, false);
  2. imagesavealpha($im, true);
  3. imagepng($im);
  4. imagedestroy($im);
nospor
Tja.... imagecreatetruecolor(). Dzięki panowie smile.gif
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.