Sur un site que je viens de finir, et hébergé chez 1and1, j'ai créé un script de redimensionnement d'images. Celui-ci marchait à merveille sur un panel de 5/6 images, pour tester, mais maintenant que le site est online, ce script est devenu la pierre centrale, et devrait pourvoir traiter plus de 70 photos...
Or, celui-ci s'arrête à peine une dizaine d'images passées... Sans crier gare... sans message d'erreur...
J'ai pourtant activé le verbose error dans un fichier php.ini placé à la racine du script...
J'en suis la, et pas plus de verbose... Le script s'arrête purement et simplement au bout d'une dizaine d'images, sans aller jusqu'à la fin du while... (il n'affiche pas le code hors while)
Code : Tout sélectionner
<?
Echo 'Generateur de thumbnails v.1.9.3.<br><br><br>';
// Memoire tampon PHP
set_time_limit(500);
// Chemin de départ
$dir_base = "../photos/";
// Ouverture du dossier
$opendir = opendir($dir_base);
// Chemin de destination
$dir_dst = "../photos/thumbs/";
// Qualite de l'image finale
$qual = "100";
while ($f = readdir($opendir)) {
// si le fichier existe
if(is_file($dir_base.$f)) {
// ------------------------------------
$ExtfichierOK = '" jpg JPG jpeg JPEG png PNG gif GIF"'; // (l espace avant jpg est important)
// extension du fichier
$xplode = explode('.',$f);
$extension = $xplode[sizeof($xplode)-1]; // dernier element
$extension = strtolower($extension); // on met en minuscule
echo 'Extension du fichier : '.$extension.'<br>';
// ------------------------------------
// si l extension correspond, on continue
if (strpos($ExtfichierOK,$extension) != '') {
// ------------------------------------
// creation de la ressource-image de l image source
switch ($extension) {
case "jpg":
case "JPG":
case "jpeg":
case "JPEG":
$img_src = imagecreatefromjpeg($dir_base.$f);
break;
case "png":
case "PNG":
$img_src = imagecreatefrompng($dir_base.$f);
break;
case "gif":
case "GIF":
$img_src = imagecreatefromgif($dir_base.$f);
break;
// On peut également ouvrir les formats wbmp, xbm et xpm
// (vérifier la configuration du serveur)
} // fin switch
// ------------------------------------
// dimensions de l image source
// Exemple avec imagesx() et imagesy()
$img_src_width = imagesx( $img_src );
$img_src_height = imagesy( $img_src );
echo 'Largeur originale : '.$img_src_width.' px<br>';
echo 'Hauteur originale : '.$img_src_height.' px<br>';
// ------------------------------------
// on veut une image de destination
// de 640 pixels de large sur 480 de haut MAXI
$img_src_width_max = 640;
$img_src_height_max = 480;
echo 'Largeur max. souhaitee : '.$img_src_width_max.' px<br>';
echo 'Hauteur max. souhaitee : '.$img_src_height_max.' px<br>';
// Nom du fichier de destination
$img_dst_name = 'thb-'.$f;
// $img_dst_name = 'thb-'.strtolower($f);
echo 'Travail de l image : <a href="'.$dir_base.$f.'" target="_blank">'.$dir_base.$f.'</a><br>';
echo 'Nom du fichier a creer : '.$img_dst_name.'<br>';
// ------------------------------------
// calcul de la taille de l image de destination
$ratiox = $img_src_width / $img_src_width_max; // ratio en largeur
$ratioy = $img_src_height / $img_src_height_max; // ratio en hauteur
$ratio = max($ratiox,$ratioy); // le plus grand
echo 'Ratio largeur : '.$ratiox.'<br>';
echo 'Ratio hauteur : '.$ratioy.'<br>';
echo 'Ratio selectionne : '.$ratio.'<br>';
// dimensions de l image dest
$img_dst_width = $img_src_width/$ratio;
$img_dst_height = $img_src_height/$ratio;
echo 'Nouvelle largeur : '.$img_dst_width.' px<br>';
echo 'Nouvelle hauteur : '.$img_dst_height.' px<br>';
// ------------------------------------
// si l image source est plus grande : on redimensionne
if ($img_src_width>$img_dst_width || $img_src_height>$img_dst_height) {
echo 'Qualite de la nouvelle image : '.$qual.'%<br>';
// Creation d une ressource-image de l image de destination
// (noire par defaut)
$img_dst_resource = imagecreatetruecolor($img_dst_width, $img_dst_height);
// ------------------------------------
// REDIMENSIONNEMENT (copie, redimensionne, re-echantillonne)
ImageCopyResampled($img_dst_resource, $img_src, 0, 0, 0, 0, $img_dst_width, $img_dst_height, $img_src_width, $img_src_height);
// ------------------------------------
// ENREGISTREMENT (en fonction de l extension) avec qualite a xxx%
switch ($extension) {
case 'jpg':
case 'JPG':
case 'jpeg':
case 'JPEG':
imagejpeg ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
echo 'Suppression des valeurs tampons... ( - '.$f.' - et - '.$img_dst_name.' - )';
imagedestroy ($img_src);
imagedestroy ($img_dst_resource);
echo ' <img src="../check.png" /><br>';
// Affichage de confirmation d'écriture
echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>... <img src="../check.png" /><br /><br />';
break;
case 'png':
case 'PNG':
imagepng ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
echo 'Suppression des valeurs tampons... ( - '.$f.' - et - '.$img_dst_name.' - )';
imagedestroy ($img_src);
imagedestroy ($img_dst_resource);
echo ' <img src="../check.png" />';
// Affichage de confirmation d'écriture
echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>... <img src="../check.png" /><br /><br />';
break;
case 'gif':
case 'GIF':
imagegif ($img_dst_resource, $dir_dst.$img_dst_name, $qual);
echo 'Suppression des valeurs tampons... ( - '.$f.' - et - '.$img_dst_name.' - )';
imagedestroy ($img_src);
imagedestroy ($img_dst_resource);
echo ' <img src="../check.png" />';
// Affichage de confirmation d'écriture
echo 'Nouvelle image : <a href="'.$dir_dst.$img_dst_name.'" target="_blank">'.$dir_dst.$img_dst_name.'</a>... <img src="../check.png" /><br /><br />';
break;
} // fin switch
} // fin si l image source est plus grande
} // fin si l extension correspond
else
echo 'Extension non reconnue... Fichier suivant...<br><br>';
// fin si l extension ne correspond pas
} // fin si le fichier existe
} // fin while
closedir($opendir); // Fermeture du dossier
echo '<br>Vos thumbnails sont disponibles dans le dossier '.$dir_dst.'<br>Merci de m avoir utilise... ;-)<br><br>';
?>