Redimensionnement à la chaine d'image

Redimensionnement à la chaine d'image - PHP - Programmation

Marsh Posté le 04-04-2006 à 16:00:17    

Bonjour à tous,
Voila je me suis fait un petit script qui me permet de redimensionner toutes les images dun dossier.
Cela fonctionne jusqu'à ce qu'il a fait la 4e ou 5e image où là il me fait une fatal error genre le temps d'execution de 30s est dépassé. Ce code est executé chez moi donc je n'ai pas de restriction de puissance.
voila mon code :

Code :
  1. <?
  2. if (isset($_POST['path'])){
  3. $i=0;
  4. $ratio = 576;
  5. $dir = "../images/parapente/".$_POST['path'];
  6. $dir_reduit = "../images/parapente/".$_POST['path']."/reduit";
  7. $dossier = opendir ($dir);
  8. echo "Opération en cours ...<br>";
  9. // on recupère la liste des images dans un tableau
  10. while ($fichier = readdir ($dossier)) {
  11.       if ($fichier != '.' && $fichier != '..' && $fichier != 'Thumbs.db' && $fichier != 'mini' && $fichier != 'reduit') {
  12.          // on stocke le nom des fichiers des miniatures dans un tableau
  13.          $listimage[] = $fichier;
  14.      }
  15. }
  16. echo "<br>";
  17. while ($listimage[$i] != NULL){
  18.  // on examine le fichier uploadé en récupérant de nombreuses informations sur ce fichier (je vous suggère de regarder la documentation de la fonction getimagesize pour de plus amples informations)
  19.         $tableau = @getimagesize($dir."/".$listimage[$i]);
  20.  // on teste le type de notre image : jpeg ou png
  21.  if ($tableau[2] == 2) {
  22.   // on crée une image à partir de notre grande image à l'aide de la librairie GD
  23.   $src = imagecreatefromjpeg($dir.'/'.$listimage[$i]);
  24.   // on teste si notre image est de type paysage ou portrait
  25.                     if ($tableau[0] > $tableau[1]) {
  26.                         $im = imagecreatetruecolor(round(($ratio/$tableau[1])*$tableau[0]), $ratio);
  27.                         imagecopyresampled($im, $src, 0, 0, 0, 0, round(($ratio/$tableau[1])*$tableau[0]), $ratio, $tableau[0], $tableau[1]);
  28.                     }
  29.     else {
  30.                         $im = imagecreatetruecolor($ratio, round(($ratio/$tableau[0])*$tableau[1]));
  31.                         imagecopyresampled($im, $src, 0, 0, 0, 0, $ratio, round($tableau[1]*($ratio/$tableau[0])), $tableau[0], $tableau[1]);
  32.                     }
  33.                     // on copie notre fichier généré dans le répertoire des miniatures
  34.                     imagejpeg ($im, $dir_reduit.'/'.$listimage[$i]);
  35.     echo $listimage[$i]." réduit<br>";
  36.     unlink($dir.'/'.$listimage[$i]);
  37.  }
  38.  $i++;
  39. }
  40. echo "Opération Terminé avec succès<br>";
  41. closedir ($dossier);
  42. }
  43. ?>
  44. <form action="redim.php" method="post">
  45. <p>
  46. <input type="text" name="path" /> <input type="submit" value="Valider" />
  47. </p>
  48. </form>


 
Ai je fait une erreur dans le code ?


---------------
Tu sais pourquoi il y a des guerre dans le monde ?   Parce que le monde est né sans l'homme et finira sans lui ...
Reply

Marsh Posté le 04-04-2006 à 16:00:17   

Reply

Marsh Posté le 04-04-2006 à 16:07:03    

C'est dans la configuration du serveur. Ca va vient pas de ton script

Reply

Marsh Posté le 04-04-2006 à 16:18:24    

Tu dois changer le 'max_execution_time'.
 
 Par defaut c'est 30 secondes en effet, monte le à plus, si t'es en local tu t'en fiche.
 
:hello:

Reply

Marsh Posté le 04-04-2006 à 17:32:11    

Reply

Marsh Posté le 04-04-2006 à 17:37:56    

Moi je te conseillerais plutot de traiter chaque image en script externe.
<img src="monscriptexterne.php?monimage=chemindelimage" />
Le traitement sera plus rapide et dans le cas où le PHP bouchonne (si vraiment y'a beaucoup d'image), il attendra avant de traiter le script de transformation.

Reply

Marsh Posté le 04-04-2006 à 18:39:18    

Ok merci de toute ces réponse je fais les modifs @ bientôt


---------------
Tu sais pourquoi il y a des guerre dans le monde ?   Parce que le monde est né sans l'homme et finira sans lui ...
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed