Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zmiana rozmiaru obrazka.
Forum PHP.pl > Forum > Przedszkole
krzywy36
Probowałem napisać funkcje obliczającą nowy rozmiar obrazka z zachowaniem proporcji, z tym że nowy rozmiar nie może przekraczac 640x480.
Napisałem coś takiego:

  1. <?php
  2. function reSize($width, $height)
  3. {
  4. if($width > 640 OR $height > 480)
  5. {
  6. if($width > $height AND $width > 640)
  7. {
  8. $height = ($height * 640)/$width;
  9. $width = 640;
  10. }
  11. elseif($width > $height AND $height > 480)
  12. {
  13. $width = ($width * 480)/$height;
  14. $height = 480;
  15. }
  16. reSize($width, $height);
  17. }
  18. else
  19. {
  20. return array($width, $height);
  21. }
  22. }
  23.  
  24. $wynik = reSize(720, 576);
  25.  
  26. print_r($wynik);
  27. ?>


niestety powyższy kod nic nie wyświetla, wydaje mi się, że wszystko jest dobrze a mimo to nie działa ;/
Może ktoś z was widzi błąd?
Wicepsik
  1. function myReSize($w, $h){
  2.  
  3. $mw = $w / 640;
  4. $mh = $h / 480;
  5.  
  6. if($w > 640 and $h > 480){
  7. if($w > $h){
  8. return array($w/$mw, $h/$mw);
  9. }else{
  10. return array($w/$mh, $h/$mh);
  11. }
  12. }else{
  13. return array($w, $h);
  14. }
  15. }
krzywy36
po podaniu danych 720 i 576 Twoja funkcja zwraca 640 i 512, 512 > 480 czyli nie działa ;/

Poprawny wynik to 600 i 480 i moja funkcja ma takie wartości $width i $height po wykonaniu ale nie wiem czemu nie chce ich zwrocic ;/

Edit:
Głównie chodzi tu o tą rekurencję, dzieki niej wyniki są poprawne, bo Twoja funkcja zwraca dane po "jednym wykonaniu".
mortus
Spróbuj w linii 16 napisać tak:
  1. return reSize($width, $height);
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.