Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ Precyzja w bibliotece GD

Napisany przez: blackstone 15.05.2018, 17:55:44

Mam takie dwa pytania odnośnie posługiwania się biblioteką GD w kontekście skryptu generującego grafikę który robię a z którymi na razie sobie nie poradziłem.

1) Mam problem z zarządzaniem wielkością obrazka nanoszonego na inny obrazek ( nie chodzi o przenikanie ), ale chodzi o jego wymiary wewnętrzne, otóż funkcja imagecopyresized() robi mi jego zoom - czyli zamiast manipulować całym obrazkiem zarządzam jedynie jego kadrem (np obrazek który nakładam na jakieś tło zamiast zawierać zdjęcie całej dziewczyny zawiera górną jej część a dolnej nie ma). Wiem jak przesunąć kadr z jednej części na inną zdjęcja, ale nie potrzebuje kadru, a całe foto. Skrypt poniżej.

  1.  
  2. $tlo = imagecreateTruecolor(400,400) ;
  3. $purple = ImageColorAllocate($tlo,184,3,255) ;
  4. imageFill($tlo,0,0,$purple) ;
  5.  
  6.  
  7.  
  8. $image = imagecreatefromjpeg('foto/CL.jpg') ;
  9.  
  10. imagecopyresized($tlo,
  11. $image,
  12. 0, // położenie obrazka od krawędzi tła
  13. 0, // położenie obrazka od krawędzi tła
  14. 0, // w - wewnętrzne kadrowanie obrazka - przeszuwa obszar kadru wględem szerokości
  15. 0, // h - wewnętrzne kadrowanie obrazka - przeszuwa obszar kadru wględem wys.
  16. 200 ,// w całego obrazka
  17. 200, // h całego obrazka
  18. imagesx($tlo),
  19. imagesy($tlo)
  20. ) ;
  21.  
  22.  
  23.  




2) Szukam sposobu jak móc podzielić tekst nakładany na grafikę na linijki tak jak w html za pomocą znacznik <br> mogę zarządzić która część tekstu pod którą się znajduję. Używam do nakładania tekstu funkcji imagettftext() , na razi nie dokopałem sie do innej która by mi w jakiś sposób umożliwiała podzielenie tekstu na linijki.


Przykład:

  1.  
  2.  
  3. imagettftext($tlo,
  4. 10 , // wielość czcionka
  5. 0 // nachylenie tekstu
  6. , 200 // położenie - szerokość
  7. , 250 // położenie - wysokość
  8. , $white // kolor
  9. ,'font/KFMeta-NormalTT.ttf' //czcionka
  10. ,'Lannisters always pays their debts.' // tekst
  11. ) ;
  12.  
  13.  



Z góry dzięki za sugestie.

Napisany przez: Kshyhoo 15.05.2018, 18:21:29

Ad. 2: http://forum.php.pl/index.php?showtopic=186416&view=findpost&p=908699

Napisany przez: blackstone 17.05.2018, 14:56:27

Dzięki a dobry link. Dopytam w sprawie nr1. jaką inną funkcją można uzyskać podobny efekt docelowo ( może się uda z jakimś zamiennikiem imagecopyresized()) ?

Napisany przez: trueblue 17.05.2018, 15:11:34

Zapoznaj się z dokumentacją funkcji.

Kopiujesz obszar [0,0] [399,399] z obrazka z pliku, do [0,0] [199, 199] tła.
Powinieneś raczej kopiować do [0,0] [399,399] tła, obrazek z [0,0] i jakichś tam wymiarów. Skoro kopiujesz z obrazka obszar kwadratowy, to taki efekt uzyskujesz.

Napisany przez: blackstone 19.05.2018, 15:40:41

Dzięki pomogłeś. GD to trochę nowa dla mnie przygoda, gdzieś się zakręciłem smile.gif. Wystarczyło zamiast imagesx/y pobrać rozmiary pliku przez getimagesize().

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)