Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> GD - skalowanie do najbliższego rozmiaru
szuki
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

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


Witam, mam mały problem z napisaniem odpowiedniego równania, które pomoże mi przeskalować obraz do określonego rozmiaru.
Całość polega na tym, że zrobiłem ramkę w png, która ma rozmiar 700x500px. Całość leci do pętli, gdzie nakładana jest na różnych rozmiarów obrazy.

Zależy mi na przeskalowaniu ich w ten sposób by x i y nie były większe od powyższej ramki. Jednak by skalowanie było proporcjonalne, a jeżeli obraz bazowy (na którego nakładany jest png) będzie mniejszy niż 700x500 zostanie wypełniony białym tłem (co chyba jest domyślnie robiony w przypadku imagecopyresampled).

Oto skrypt:

  1. <?php
  2.  
  3. $file = 'photo/'. $image_name .'jpg';
  4.  
  5. $save = 'photo/'. $image_name .'2.jpg';
  6.  
  7. list($width, $height) = getimagesize($file) ;
  8.  
  9. if($width > 500 || $height > 500){
  10.  
  11.  
  12. $modwidth = $width; // no i co dalej?
  13. $modheight = $height;
  14.  
  15. $tn = imagecreatetruecolor($modwidth, $modheight) ;
  16.  
  17. $image = imagecreatefromjpeg($file) ;
  18.  
  19. imagecopyresampled($tn, $image, 0, 0, 0, 0, $modwidth, $modheight, $width, $height) ;
  20.  
  21. imagejpeg($tn, $save, 100);
  22.  
  23. $im = imagecreatefromjpeg('photo/'. $image_name .'2.jpg');
  24. $stamp = imagecreatefrompng('photo/top.png');
  25.  
  26. $sx = imagesx($stamp);
  27. $sy = imagesy($stamp);
  28.  
  29. imagecopyresampled($im, $stamp, 0, 0, 0, 0, $modwidth, $modheight, 700, 500);
  30.  
  31. header('Content-type: image/png');
  32.  
  33. imagepng($im);
  34. imagedestroy($im);
  35.  
  36. }
  37.  
  38. else{
  39.  
  40. // mniejszy obraz
  41.  
  42. }
  43.  
  44. ?>


Będę wdzięczny za każdą pomoc,
pozdrawiam.
Go to the top of the page
+Quote Post
lukasz108min
post
Post #2





Grupa: Zarejestrowani
Postów: 47
Pomógł: 0
Dołączył: 9.10.2010

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


Pomysły na to nie mam ale moim zdaniem lepiej mieć białą ramke niż żeby obraz się "rozjechał" na boki
Go to the top of the page
+Quote Post
Pawel_W
post
Post #3





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


czysta matematyka: porównaj sobie $width/700 i $height/500, większa z tych liczb to "ratio" o które musisz pomniejszyć oba rozmiary żeby mieściły Ci się w ramce (IMG:style_emoticons/default/wink.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: 24.08.2025 - 09:11