login  Naam:   Wachtwoord: 
Registreer je!
 Forum

foto upload script verbruikt volgens error te veel geheugen

Offline daanlaan - 10/12/2009 21:32 (laatste wijziging 10/12/2009 22:23)
Avatar van daanlaanMySQL interesse het script upload dus adhv een for loop (max 6) geselecteerde fotos
wat ik ook nog zou willen doen is de eerste foto (dus de grote) verkleinen naar een standaard formaat, maar gaat dat voordat hij eerst op de ftp staat?? nja jullie bekijken het maar ;)

hij geeft de code voor deze regel:
$bron = imagecreatefromjpeg($locatie.$newname.".jpg");
(r 116 in code)
  1. $locatie="img_uploads/groot/";
  2. $locatie_mid="img_uploads/mid/";
  3. $locatie_klein="img_uploads/klein/";
  4. $toegestaan = "jpg";
  5. $max_size = 500000;
  6. $aantal_fotos_uploaded = 0;
  7. for($i=1;$i<=6;$i++)
  8. {
  9. if(!empty($_FILES['img'.$i.'']['name'])){$aantal_fotos_uploaded++;}
  10. }
  11.  
  12. // elk bestand zijn extensie checken //
  13. $extensies_toegestaan = explode(", ", $toegestaan);
  14. //standaard op 1 zetten //
  15. $extensions_ok = 1;
  16. for($y=1;$y<=$aantal_fotos_uploaded;$y++)
  17. {
  18. for($i = 0; $i < count($extensies_toegestaan); $i++)
  19. {
  20. $extensie_bestand = pathinfo($_FILES['img'.$y.'']['name']);
  21. $extensie_bestand = $extensie_bestand[extension];
  22. if($extensies_toegestaan[$i] != "$extensie_bestand")
  23. {
  24. $extensions_ok = 0;
  25. }
  26. }
  27. }
  28.  
  29. if($extensions_ok==1 AND $foutmelding==0)
  30. {
  31. for($k=1;$k<=$aantal_fotos_uploaded;$k++)
  32. {
  33. if(!is_uploaded_file($_FILES['img'.$k.'']['tmp_name']))
  34. {
  35. $fouten[] = "<u>Foto ".$k."</u>: kon niet worden geüpload, je kan proberen ze opnieuw te uploaden.<br>";
  36. }
  37. else
  38. {
  39. if($_FILES['img'.$k.'']['size']>$max_size)
  40. {
  41. $fouten[] = "<u>Foto ".$k."</u>: foto is te groot, de maximale grootte is: <b>".$max_size."</b>";
  42. }
  43. // hoeveel afbeeldingen zijn er al => nodig voor de naam van de volgende foto //
  44. if($k==1){$aantalads = mysql_fetch_array(mysql_query("SELECT aantal FROM aantal_ads"));$aantal_ads = $aantalads['aantal'];}
  45. $newname = ($aantal_ads+1)."_".$k;
  46.  
  47. if(!move_uploaded_file($_FILES['img'.$k.'']['tmp_name'],
  48. $locatie.$newname.".jpg"))
  49. {
  50. $fouten[] = "Eén of meerdere foto's konden niet worden geüpload, je kan proberen ze opnieuw te uploaden";
  51. }
  52. else
  53. {
  54. $bron = imagecreatefromjpeg($locatie.$newname.".jpg");
  55. if(!imagecreatefromjpeg($locatie.$newname.".jpg"))
  56. {
  57. $fouten[] = "Eén of meerdere foto's konden niet worden geüpload, je kan proberen ze opnieuw te uploaden.";
  58. }
  59. $b_breedte = imagesx($bron);
  60. $b_hoogte = imagesy($bron);
  61. $path = $locatie.$newname.".jpg";
  62.  
  63. // nieuwe afbeelding plaatsen in kleine map //
  64. $nieuw_breedte_klein = resize(75,60,$path,"width");
  65. $nieuw_hoogte_klein = resize(75,60,$path,"height");
  66. $nieuw_jpg_klein = imagecreatetruecolor($nieuw_breedte_klein ,$nieuw_hoogte_klein);
  67. imagecopyresampled($nieuw_jpg_klein, $bron, 0, 0, 0, 0, $nieuw_breedte_klein, $nieuw_hoogte_klein, $b_breedte, $b_hoogte);
  68. imagejpeg($nieuw_jpg_klein,$locatie_klein.$newname.".jpg",80);
  69.  
  70. // nieuwe afbeelding plaatsen in mid map //
  71. $nieuw_breedte_mid = 250;
  72. $nieuw_hoogte_mid = resize_normal(250,$path);
  73. $nieuw_jpg_mid = imagecreatetruecolor($nieuw_breedte_mid ,$nieuw_hoogte_mid);
  74. imagecopyresampled($nieuw_jpg_mid, $bron, 0, 0, 0, 0, $nieuw_breedte_mid, $nieuw_hoogte_mid, $b_breedte, $b_hoogte);
  75. imagejpeg($nieuw_jpg_mid,$locatie_mid.$newname.".jpg",80);
  76. }
  77. }
  78. }
  79. }

1 antwoord

Gesponsorde links
Offline kurohyou - 11/12/2009 20:27 (laatste wijziging 11/12/2009 20:55)
Avatar van kurohyou Oud lid error zegt teveel geheugenverbruik? hoeveel juist? de error zal wel een pak meer gezegd hebben dan hier beschreven.
als je imagecreatefromjpeg gebruikt wil dit niet persé zeggen als je een image hebt van 400kb dat het geheugenverbruik hetzelfde zal zijn, zeker in geval van truecolor.

hoe dan ook probeer eens onderstaand script in een apart bestand en kijk of dit werkt, dit script werkt perfect op mijn systeem en online.

  1. <?php
  2.  
  3. $imagefolder='images/';
  4. $thumbsfolder='thumbs/';
  5. $pics=create_array($imagefolder,"jpg,JPG,JPEG,jpeg");
  6.  
  7. if ($pics[0]!="")
  8. {
  9. foreach ($pics as $p)
  10. {
  11. createthumb($imagefolder,$p,"thumbs/th_".$p,100,100);
  12. }
  13. }
  14.  
  15. function createthumb($dir, $name,$filename,$new_w,$new_h)
  16. {
  17. $system=explode(".",$name);
  18. if (preg_match("/jpg|jpeg|JPG/",$system[1]))
  19. {
  20. $src_img=imagecreatefromjpeg($dir .$name);
  21. }
  22. $old_x=imageSX($src_img);
  23. $old_y=imageSY($src_img);
  24. if ($old_x > $old_y)
  25. {
  26. $thumb_w=$new_w;
  27. $thumb_h=$old_y*($new_h/$old_x);
  28. }
  29. if ($old_x < $old_y)
  30. {
  31. $thumb_w=$old_x*($new_w/$old_y);
  32. $thumb_h=$new_h;
  33. }
  34. if ($old_x == $old_y)
  35. {
  36. $thumb_w=$new_w;
  37. $thumb_h=$new_h;
  38. }
  39. $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
  40. imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);
  41. imagejpeg($dst_img,$filename);
  42. imagedestroy($dst_img);
  43. imagedestroy($src_img);
  44. }
  45.  
  46. // deze functie plaatst alle image namen in array
  47. function create_array($dir,$filters)
  48. {
  49. $handle=opendir($dir);
  50. $files=array();
  51. if ($filters == "all")
  52. {
  53. while(($file = readdir($handle))!==false)
  54. {
  55. $files[] = $file;
  56. }
  57. }
  58. if ($filters != "all")
  59. {
  60. $filters=explode(",",$filters);
  61. while (($file = readdir($handle))!==false)
  62. {
  63. for ($f=0;$f<sizeof($filters);$f++):
  64. $system=explode(".",$file);
  65. if ($system[1] == $filters[$f])
  66. {
  67. $files[] = $file;
  68. }
  69. endfor;
  70. }
  71. }
  72. closedir($handle);
  73. return $files;
  74. }
  75. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.222s