Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> gd kolorowy tekst na obrazku
nospor
post
Post #1





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
prowseed
post
Post #2





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

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


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 : )
Go to the top of the page
+Quote Post
maly_swd
post
Post #3





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

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


imagecreatetruecolor - zamiast imagecreate (powinno pomoc).

Poniewaz przy tym pierwszym chyba robi sie paleta indexowana.

Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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);
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Tja.... imagecreatetruecolor(). Dzięki panowie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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: 5.10.2025 - 17:32