Witam, robie upload zdjęć na stronę z jednoczesnym sprawdzaniem ich rozmiarów i w razie większych zmniejszenia ich.

Sprawa jest o tyle dziwna, że gdy uploaduje zdjęcie o rozmiarach dokładnie pożądanych lub mniejszych to jest ok, jednak gdy wrzucam fotke większą to wylatują błędy.

To kawałek kodu:
  1. <?php
  2. if ($_FILES[mapka]['name']) {
  3.  
  4. list($nazwapliku,$rozszerzenie) = explode(".",$_FILES[mapka]['name']);
  5.  
  6. if($rozszerzenie == "JPG" or $rozszerzenie == "jpg" or $rozszerzenie == "PNG" or $rozszerzenie == "png" or $rozszerzenie == "BMP" or $rozszerzenie == "bmp" or $rozszerzenie == "GIF" or $rozszerzenie == "gif") {  
  7.  
  8. $gen = md5(rand(0,mktime()));
  9. $dir = 'images/mapka/'.$gen.'.'.$rozszerzenie.'';
  10. $file = $_FILES[mapka]['tmp_name'];
  11. $org = imagecreatefromjpeg($file);
  12. $size_org = getimagesize ($file);
  13.  
  14. if ($size_org[0] > $size_org[1]) {
  15. $x_new = 320;
  16. $y_new = $x_new * $size_org[1]/$size_org[0];
  17. }
  18. else {
  19. $y_new =320;
  20.  $x_new = $y_new * $size_org[0]/$size_org[1];
  21. }
  22.  
  23. $new = imagecreatetruecolor($x_new,$y_new); 
  24.  
  25. imagecopyresized($new,$org,0,0,0,0,$x_new,$y_new,$size_org[0],$size_org[1]);
  26. imagejpeg($new,$dir,80);
  27. imagedestroy($new);
  28. imagedestroy($org);
  29. }
  30. else {
  31. $_SESSION["Info"] = "Błąd! Rozszerzenie pliku jest niezgodne z oczekiwanym.<br>Dopuszczalne rozszerzenia to jpg, bmp, gif, png.<br>Za 3 sekundy strona sie przeładuje...";
  32. header("Refresh: 3; url=http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/kontakt.php?akcja=edytujkontakt&id=".$id."");
  33. // print "<tr><td width='780px' height='44px' colspan='3' class='naglowekprzekierowanie'></td></tr>";
  34. print "<tr><td align='center' width='780px' height='150px' colspan='3' class='trescprzekierowanie'>";
  35. print $_SESSION["Info"];
  36. print "</td></tr>";
  37. include "footer.php";
  38. }
  39. }
  40. ?>


A tu błąd przy uploadzie zdjęć większych niż pożądane rozmiary:

Warning: Division by zero in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 187 (odpowiednio linia 20)

Warning: imagecreatetruecolor(): Invalid image dimensions in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 190 (odpowiednio linia 23 itd.)

Warning: imagecopyresized(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 192

Warning: imagejpeg(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 193

Warning: imagedestroy(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 194

Warning: imagedestroy(): supplied argument is not a valid Image resource in c:\usr\krasnal\www\tranex\includes\kontakt_func.php on line 195

Wiem, ze te błędy to wynik dzielenia przez 0. Jednak dziwne, że tylko przy obrazach większych niż pożądane wartości.
Czy możliwe aby funkcja getimagesize(0; pobierała błędne wartości?
Zmienna $size_org nie zawiera żadnych wartości wtedy gdy wylatuje błąd.