Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]imagettftext nie z obrazu tylko z tekstu., jak poprawnie wykonać tworzenie JPG z tekstu.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Borykam się z pewną sytuacją, chcę stworzyć JPG tylko z tekstu.

  1. $font = 'arial.ttf';
  2. $font_size = 12;
  3. $text = 'jakis tekst';
  4. $h = 650;
  5. $w = 60;
  6.  
  7. $ob = ImageCreate($h,$w);
  8. $text_color= ImageColorAllocate($ob,104,104,104);
  9. $bg_color = imagecolorallocate($ob, 208, 208, 208);
  10. $bg_color2 = imagecolorallocate($ob, 229, 229, 229);
  11.  
  12. ImageFill($ob,0,0,$bg_color);
  13. imagettftext($ob, $font_size, 0, 10, 17, $text_color, $font, 'test 1:');
  14. header('Content-type: image/png');
  15. ImagePng($ob);
  16. ImageDestroy($ob);


Obrazek zostaje stworzony, teraz chcę dodać drugi tekst do tego obrazka ale z tłem bg_color2.

  1. ImageFill($ob,0,0,$bg_color);
  2. imagettftext($ob, $font_size, 0, 10, 17, $text_color, $font, 'test 1:');
  3. ImageFill($ob,0,0,$bg_color2);
  4. imagettftext($ob, $font_size, 0, 10, 47, $text_color, $font, 'test 2:');


Nie przynosi zamierzonego efektu. Ogólnie chcę osiągnąć coś takiego , że pod każdym tekstem będzie na przemian inny bg_color.
Reasumując będzie z 10 "rowów" na przemian z innym tłem, szerokość i wysokość każdego ta sama.

Teraz kilka pytań :
- wysokość tego "rowu" gdzie tekst będzie za długi powiększy mi o + 30 px. Rozumiem, że muszę sobie wyliczyć ile tekstu mi wejdzie (chyba strlen ?), potem zliczać wpisany tekst i jeśli wyjdzie więcej to tworzyć + 30 px ? tak

- jak i czy jest możliwość by każdy "row" miał border 1 px ?

Ten post edytował casperii 19.07.2015, 16:32:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
casperii
post
Post #2





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Żeby nie zakładać nowego tematu a tyczy się tak jakby dalszego ciągu mojego skryptu, to mam panowie prośbę, co jest tu źle:

  1. $i=0;
  2. while ($result = $query ->fetch_object()){
  3. if($i == 2){
  4. $tlo = $bg_color2;
  5. }else{
  6. $tlo = $bg_color;
  7. }
  8.  
  9. $co = strlen($result->ingredient);
  10. if($co>50){
  11. $skladnik = $result->ingredient;
  12. $Value1 = wordwrap($skladnik, 70, "\n", true);
  13. $extra = 20;
  14. }else{
  15. $skladnik = $result->ingredient;
  16. }
  17. imagefilledrectangle($ob, 0, 150+$dodaj, $w, 180+$dodaj+$extra, $tlo);
  18. imagettftext($ob, $font_size-2, 0, 185, 170+$dodaj, $text_color, $font, $skladnik);
  19. imagerectangle($ob,0,150+$dodaj,$w-1,180+$dodaj+$extra,$text_color);
  20. $dodaj .=30;
  21. }
  22. $dodaj++;
  23. $i++;


Chcę osiągnąć co drugi by na przemian miał raz bg_color, raz bg_color2, dodatkowo z każdym nowym wyciągniętym rekordem wartość współrzędnej Y ma zwiększyć się o 30. Ale coś nie mogę osiągnąć mojego zamierzonego celu. Gdzie robię błąd?

Ten post edytował casperii 26.07.2015, 21:39:04
Go to the top of the page
+Quote Post

Posty w temacie


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: 18.10.2025 - 02:06