Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] obrazek generowany przez skrypt
marian2299
post
Post #1





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


Cześć,

piszę, dlatego że chciałbym zrobić obrazek z cytatem. Cytaty miałby się losować z pliku .txt i wyświetlać się na obrazku o określonej czcionce itp. Miałyby też być w odpowiednim miejscu, lekko z prawej strony. Wie ktoś może, jak to zrobić? <prosi o przykładowy kod>


Pozdrawiam smile.gif
M.


--------------------
film edit student
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 16)
Kildyt
post
Post #2





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Jeżeli chcesz wygenerować obrazek z cytatem użyj GD.
Nie podamy ci przykładowego kodu (nie ten dział) ale w internecie jest pełno tutoriali o GD i nanoszeniu na obrazek tekstu.


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #3





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


  1. <?php
  2. header("Content-type: image/jpeg");
  3. $obrazek = ImageCreateFromJpeg("lesmis.jpg");
  4.  
  5. $czcionka = ImageLoadFont("czcionka.ft");
  6. $kolor_tekstu = ImageColorAllocate($obrazek,0,0,0);
  7. ImageString($obrazek,$czcionka,5,5,$cytat,$kolortekstu);
  8. $cytat =
  9.  
  10. ImageJpeg($obrazek);
  11. ImageDestroy($obrazek);
  12. ?>


znalazłem mniej więcej coś takiego, ale nadal nie wiem jak wylosować cytat z pliku tekstowego...

Ten post edytował marian2299 21.01.2011, 20:36:20


--------------------
film edit student
Go to the top of the page
+Quote Post
Kildyt
post
Post #4





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


No chłopie, czy google i dokumentacja boli?
Jeżeli wszystkie cytaty masz w jednym pliku to najpierw je explode-ujesz, a następnie rand-ujesz.


--------------------
Go to the top of the page
+Quote Post
Daiquiri
post
Post #5





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




Jeżeli oczekujesz gotowego kodu, napisz - przeniosę temat do innego działu z tagiem "wolontariat" (chyba, że dysponujesz gotówką smile.gif). W innym przypadku napisz z czym konkretnie masz problem.
Go to the top of the page
+Quote Post
marian2299
post
Post #6





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


Nie za bardzo wiem, jak użyć rand w tym przypadku...

  1. <?php
  2. header("Content-type: image/jpeg");
  3. $obrazek = ImageCreateFromJpeg("lesmis.jpg");
  4.  
  5. $cytaty = "pierwszy cytat|drugi cytat|trzeci cytacik|blablabla...";
  6. $losowycytat = explode("|", $cytaty);
  7.  
  8.  
  9. $czcionka = ImageLoadFont("czcionka.ft");
  10. $kolor_tekstu = ImageColorAllocate($obrazek,0,0,0);
  11. ImageString($obrazek,$czcionka,5,5,$cytat,$kolortekstu);
  12. $cytat =
  13.  
  14. ImageJpeg($obrazek);
  15. ImageDestroy($obrazek);
  16. ?>


--------------------
film edit student
Go to the top of the page
+Quote Post
Kildyt
post
Post #7





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Rand po prostu losuje liczbę z podanego przedziału.
Zobacz sobie dzięki print_r co zwraca $losowycytat. Jest to tablica posiadająca ponumerowane klucze (od 0).
Więc
  1. echo $losowycytat[rand(0, count($losowycytat)-1);
zwróci losową wartość z tablicy.


--------------------
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #8





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Rand może zwrócić klucz nieistniejący w tablicy - dlatego istnieje array_rand, która losuje jeden lub więcej indeksów.
Go to the top of the page
+Quote Post
marian2299
post
Post #9





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


" Obrazek " (..) cytaty.php" nie może zostać wyświetlony, ponieważ zawiera błędy. "

  1. <?php
  2. header("Content-type: image/jpeg");
  3. $obrazek = ImageCreateFromJpeg("lesmis.jpg");
  4.  
  5. $cytaty = "pierwszy cytat|drugi cytat|trzeci cytacik|blablabla...";
  6. $losowycytat = explode("|", $cytaty);
  7.  
  8. $losowycytat1 = $losowycytat[rand(0, count($losowycytat)-1)];
  9.  
  10.  
  11. $czcionka = ImageLoadFont("georgia.TTF");
  12. $kolor_tekstu = ImageColorAllocate($obrazek,0,0,0);
  13. ImageString($obrazek,$czcionka,5,5,$losowycytat1,$kolortekstu);
  14. ImageJpeg($obrazek);
  15. ImageDestroy($obrazek);
  16. ?>


--------------------
film edit student
Go to the top of the page
+Quote Post
Mephistofeles
post
Post #10





Grupa: Zarejestrowani
Postów: 1 182
Pomógł: 115
Dołączył: 4.03.2009
Skąd: Myszków

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


Może BOM? Wyślij tymczasowo jako text/plain i zobacz czy generuje błędy.
Go to the top of the page
+Quote Post
Kildyt
post
Post #11





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Jakie błędy zwraca? Najpierw sprawdź czy masz zainstalowane GD (gd_info).


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #12





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


GD jest zainstalowane,

text/plain mi się nie wyświetla, plik zaczyna się pobierać ;O

Okej, uzyskałem taki, działający, kod:

  1. <?php
  2. header("Content-type: image/jpeg");
  3. $obrazek = ImageCreateFromJpeg("lesmis.jpeg");
  4.  
  5. $cytaty = "Whether true or false, what is said about men often has as much influence on their lives, and particularly on their destinies, as what they do.|If the soul is left in darkness, sins will be committed. The guilty one is not he who commits the sin, but the one who causes the darkness.|In passing, we might say that success is a hideous thing. Its false similarity to merit deceives men...They confuse heaven's radiant stars with a duck's footprint left in the mud.|All things considered, sire, there is nothing to fear from these people. They are as carefree and lazy as cats. The lower classes in the provinces are restless, those in Paris are not...They are not dangerous. In sum: dependable riffraff.";
  6. $losowycytat = explode("|", $cytaty);
  7.  
  8. $losowycytat1 = $losowycytat[rand(0, count($losowycytat)-1)];
  9.  
  10.  
  11. $rozmiar = 10;
  12. $pochylenie = 0;
  13. $x = 136;
  14. $y = 35;
  15. putenv('GDFONTPATH=' . realpath('.'));
  16. $font = 'georgia.TTF';
  17. $white = imagecolorallocate($obrazek, 255, 255, 255);
  18. imagettftext($obrazek, $rozmiar, $pochylenie, $x, $y, $white, $font, $losowycytat1);
  19. ImageJpeg($obrazek);
  20. ?>


Tylko... da się jakoś sprawić, żeby tekst się zawijał?


--------------------
film edit student
Go to the top of the page
+Quote Post
Kildyt
post
Post #13





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Co rozumiesz przez słowo "zawijał"?
Musisz wiedzieć, że GD to nie żaden zaawansowany program graficzny i nie nadaje się on do bardzo zaawansowanych działań.


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #14





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


W 'manualu' jest taki oto kod:

  1. <?php
  2. function wrap($fontSize, $angle, $fontFace, $string, $width){
  3.  
  4. $ret = "";
  5.  
  6. $arr = explode(' ', $string);
  7.  
  8. foreach ( $arr as $word ){
  9.  
  10. $teststring = $ret.' '.$word;
  11. $testbox = imagettfbbox($fontSize, $angle, $fontFace, $teststring);
  12. if ( $testbox[2] > $width ){
  13. $ret.=($ret==""?"":"\n").$word;
  14. } else {
  15. $ret.=($ret==""?"":' ').$word;
  16. }
  17. }
  18.  
  19. return $ret;
  20. }
  21. ?>
, da radę? Tylko co to jest $string, $angle ?

@Kildyt, zawijanie tekstu to przenoszenie wyrazów do kolejnych linijek...

Ten post edytował marian2299 21.01.2011, 22:21:59


--------------------
film edit student
Go to the top of the page
+Quote Post
Kildyt
post
Post #15





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Cytat(marian2299 @ 22.01.2011, 00:21:07 ) *
@Kildyt, zawijanie tekstu to przenoszenie wyrazów do kolejnych linijek...
No tak, wybacz. biggrin.gif

$string to tekst, a $angle to kąt w stopniach według którego tekst będzie mierzony (nie wiem za bardzo o co kaman, spróbuj metodą prób i błędów a samo wyjdzie).


--------------------
Go to the top of the page
+Quote Post
marian2299
post
Post #16





Grupa: Zarejestrowani
Postów: 272
Pomógł: 9
Dołączył: 6.06.2009

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


  1. <?php
  2. header("Content-type: image/jpeg");
  3. $obrazek = ImageCreateFromJpeg("lesmis.jpeg");
  4.  
  5. $cytaty = "Whether true or false, what is said about men often has as much influence on their lives, and particularly on their destinies, as what they do.|If the soul is left in darkness, sins will be committed. The guilty one is not he who commits the sin, but the one who causes the darkness.|In passing, we might say that success is a hideous thing. Its false similarity to merit deceives men...They confuse heaven's radiant stars with a duck's footprint left in the mud.|All things considered, sire, there is nothing to fear from these people. They are as carefree and lazy as cats. The lower classes in the provinces are restless, those in Paris are not...They are not dangerous. In sum: dependable riffraff.";
  6. $losowycytat = explode("|", $cytaty);
  7.  
  8. $losowycytat1 = $losowycytat[rand(0, count($losowycytat)-1)];
  9.  
  10. $warpText = wordwrap($losowycytat1, 37, "\n");
  11. $rozmiar = 10;
  12. $pochylenie = 0;
  13. $x = 134;
  14. $y = 35;
  15. putenv('GDFONTPATH=' . realpath('.'));
  16. $font = 'georgia.TTF';
  17. $white = imagecolorallocate($obrazek, 255, 255, 255);
  18. imagettftext($obrazek, $rozmiar, $pochylenie, $x, $y, $white, $font, $warpText);
  19. ImageJpeg($obrazek);
  20. ?>


to działa, ale jak wyjustować tekst?


--------------------
film edit student
Go to the top of the page
+Quote Post
Kildyt
post
Post #17





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


W notatkach dla imagettftext jest gotowa funkcja do justowania.


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 15:35