1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
| <?
// Memoire tampon PHP
set_time_limit(0);
// 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)) {
// Nom du fichier de destination
$img_dst_name = 'thb-'.$f;
// si le fichier original 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) != '') {
// si le fichier de destination n'existe pas
if (!file_exists($dir_dst.$img_dst_name)) {
echo 'Le fichier de destination ('.$dir_dst.$img_dst_name.') reste a creer...<br>';
// ------------------------------------
// 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>';
// $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 le fichier de destination n'existe pas
else echo 'Le fichier de destination (<a href="'.$dir_dst.$img_dst_name.'" target ="_blank">'.$dir_dst.$img_dst_name.'</a>) existe deja... Fichier suivant... <img src="../check.png" /><br><br>';
} // 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 original 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>';
?> |
Partager