Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: GD - skalowanie do najbliższego rozmiaru
Forum PHP.pl > Forum > PHP
szuki
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.
lukasz108min
Pomysły na to nie mam ale moim zdaniem lepiej mieć białą ramke niż żeby obraz się "rozjechał" na boki
Pawel_W
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 wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.