Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Zmiana rozmiaru obrazka., Funkcja obliczająca nowy rozmiar obrazka z zachowaniem proporcji.
krzywy36
post
Post #1





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


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?
Go to the top of the page
+Quote Post
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


  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. }
Go to the top of the page
+Quote Post
krzywy36
post
Post #3





Grupa: Zarejestrowani
Postów: 370
Pomógł: 43
Dołączył: 1.12.2007
Skąd: Kędzierzyn Koźle

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


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".

Ten post edytował krzywy36 26.04.2010, 20:55:45
Go to the top of the page
+Quote Post
mortus
post
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Spróbuj w linii 16 napisać tak:
  1. return reSize($width, $height);
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: 23.08.2025 - 12:13