Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Jak sobie poradzić z przesyłaniem dużych plików?
deha21
post
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Mam problem ze skryptem. Przez 5 inputów ładuję 5 plików, powiedzmy po 3MB - chodzi o JPG. Skrypt ma zadanie przerobić je jeżeli są większe od 800x600 i zmniejszyć, po czym dorobić miniaturkę. Jeżeli wgram np. tylko dwa obrazki z pięciu możliwych to skrypt normalnie wchodzi. Jeśli natomiast wgram te 5 to skrypt się sypie i wgrywa np. tylko jeden albo nic. Memory_limit mam ustawiony na 128MB - myślałem że to pomoże ale nic. Przy okazji czyści mi inne zmienne które były w tym formularzu. Nie wyskakuje żaden błąd, mimo włączonych opcji ich pokazywania. WTF, że tak się zapytam.

Kod zmniejszania (funkcje resize i resize2):
  1. <?php
  2. ini_set("display_errors",1);
  3. ini_set("memory_limit","128M");
  4.  
  5. function resize($filef, $new_width, $new_height, $thumb, $quality) {
  6. $info = getimagesize($filef);
  7. if ($info === false)
  8. return false;
  9. $img = null;
  10. $img = imagecreatefromjpeg($filef);
  11. $th = imagecreatetruecolor($new_width, $new_height);
  12.  
  13. imagecopyresampled($th, $img, 0, 0, 0, 0, $new_width, $new_height, $info[0], $info[1]);
  14. imagejpeg($th, $filef, $quality);
  15. imagedestroy($th);
  16. imagedestroy($img);
  17. return true;
  18.  
  19. }
  20.  
  21. function resize2($filef, $new_width, $new_height, $thumb, $quality) {
  22. $info = getimagesize($filef);
  23. if ($info === false)
  24. return false;
  25. $img = null;
  26. $img = imagecreatefromjpeg($filef);
  27. $th = imagecreatetruecolor(80, 80);
  28.  
  29. imagecopyresampled($th, $img, 0, 0, 0, 0, $new_width, $new_height, $info[0], $info[1]);
  30. imagejpeg($th, $filef, $quality);
  31. imagedestroy($th);
  32. imagedestroy($img);
  33. return true;
  34.  
  35. }
  36.  
  37. ?>


Kod wgrywania (funkcja uruchamiana kilkakrotnie w przypadku kilku plików):
  1. function adpic($id,$arg,$position) {
  2.  
  3. $path="../pliki/".$id;
  4. if (!file_exists($path)) { mkdir($path); chmod($path, 0777); }
  5. $newimage=uniqid().".jpg";
  6. move_uploaded_file($_FILES[$arg]["tmp_name"],$path."/".$newimage);
  7. $info = getimagesize($path."/".$newimage);
  8.  
  9. if ($info[0]>$info[1]) {
  10. if ($info[0]>625) {
  11. $height=(625/$info[0])*$info[1];
  12. resize($path."/".$newimage, 625, $height, $path."/".$newimage, 75);
  13. }
  14. } elseif ($info[0]<$info[1]) {
  15. if ($info[1]>450) {
  16. $width=(450*$info[0])/$info[1];
  17. resize($path."/".$newimage, $width, 450, $path."/".$newimage, 75);
  18. }
  19. }
  20.  
  21. if ($info[0]<=$info[1]) {
  22. copy($path."/".$newimage,$path."/thumb_".$newimage);
  23. $thumb_height = (80/$info[0])*$info[1];
  24. resize2($path."/thumb_".$newimage, 80, $thumb_height, $path."/thumb_".$newimage, 80);
  25. } elseif ($info[0]>$info[1]) {
  26. copy($path."/".$newimage,$path."/thumb_".$newimage);
  27. $thumb_width=(80*$info[0])/$info[1];
  28. resize2($path."/thumb_".$newimage, $thumb_width, 80, $path."/thumb_".$newimage, 80);
  29. }
  30.  
  31. $pic=mysql_query("INSERT INTO zdjecie values ('','".$id."','".$newimage."','".$position."')");
  32. }


--------------------
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 Aktualny czas: 19.08.2025 - 07:05