Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Masowe uploadowanie i skalowanie zdięć, Dziwny problem.
Tival
post 6.04.2013, 17:31:09
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 10.08.2009

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


Witam serdecznie mam oto taki kod:
  1. <?php
  2.  
  3. ini_set('max_execution_time', 0);
  4.  
  5. echo "<form method='post' action='' enctype='multipart/form-data'>
  6. <input name='photo[]' id='filesToUpload' type='file' multiple='' />
  7. <input type='submit' value='Dodaj!'>
  8. </form>";
  9.  
  10. for ($i=0; $i<count($_FILES['photo']['name']); $i++)
  11. {
  12. $name = $_FILES['photo']['name'][$i];
  13. $type = $_FILES['photo']['type'][$i];
  14. $tmp_name = $_FILES['photo']['tmp_name'][$i];
  15. $size = $_FILES['photo']['size'][$i];
  16. $error = $_FILES['photo']['error'][$i];
  17.  
  18. list($szer_pocz, $wys_pocz) = getimagesize($tmp_name);
  19. $prop = $wys_pocz / $szer_pocz ;
  20.  
  21. $szer_konc = 800;
  22. $wys_konc = $szer_konc * $prop;
  23.  
  24. $new_name = md5(time()+uniqid());
  25. $new_name_full_image = $new_name."_full".".jpg";
  26. $new_name_thumb_image = $new_name."_thumb".".jpg";
  27.  
  28. echo resizeImage($tmp_name,"gallery/".$new_name_full_image, $szer_konc,$wys_konc,70);
  29. echo resizeImage($tmp_name,"gallery/".$new_name_thumb_image, $szer_konc/2,$wys_konc/2,50);
  30.  
  31. sleep(1);
  32. }
  33.  
  34. function resizeImage($SrcImage,$DestImage, $MaxWidth,$MaxHeight,$Quality)
  35. {
  36. list($iWidth,$iHeight,$type) = getimagesize($SrcImage);
  37. $ImageScale = min($MaxWidth/$iWidth, $MaxHeight/$iHeight);
  38. $NewWidth = ceil($ImageScale*$iWidth);
  39. $NewHeight = ceil($ImageScale*$iHeight);
  40. $NewCanves = imagecreatetruecolor($NewWidth, $NewHeight);
  41.  
  42. $NewImage = imagecreatefromjpeg($SrcImage);
  43.  
  44. if(imagecopyresampled($NewCanves, $NewImage,0, 0, 0, 0, $NewWidth, $NewHeight, $iWidth, $iHeight))
  45. {
  46. if(imagejpeg($NewCanves,$DestImage,$Quality))
  47. {
  48. if (imagedestroy($NewCanves))
  49. {
  50. return true;
  51. }
  52. }
  53. }
  54. }
  55.  
  56. ?>


Zadaniem skryptu jest zeskalowanie przesłanego zdięcia do dwóch rozmiarów a następnie zapisanie tych dwóch plików w katalogu pod podobnymi nazwami (thumb i full).
Skrypt TEORETYCZNIE działa... problem w tym że nie zawsze?!
Tak dobrze czytacie... dajmy na to wybiore 10 plików które chce wysłać i zeskalować, wrzucam je i z tych 10 skalują się może 4?
Gdy wyśle jeszcze raz te 10 plików (Przez F5 np) to zeskaluje się czasami 5, 6, 2 itp... takie randomowe liczby...
To samo ma miejsce przy mniejszej ilości plików (zamist 4, 2 itp).

Moje rozwiązanie problemu polega na wrzuceniu funkcji sleep(1); po zakończeniu skalowania (i wtedy pliki o rozdzielczosci 1920x1080 sklaują się wszystkie), ale kto wie co się stanie gdy wrzuce większe pliki (jeszcze nie sprawdzałem).

Macie jakiś pomysł jak to podkręcić żeby uzyskać maksymalną wydajność, i dokładność?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 11:42