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 158 159 160 161 162 163 164 165 166
| <html>
<body>
<?php
/*Fonction qui créer la mimiature d'une image.
Retourne true si la miniature a bien été créée, un message d'erreur sinon
Liste des paramètres :
- $img : Chemin relatif du répertoire dans lequel se trouve l'image originale
- $max_width : Largeur maximale pour la miniature
- $max_height : Hauteur maximale pour la miniature
- $repertoire_destination : Répertoire dans lequel doit être sauvegardée la miniature
- $prefixe : Préfixe donné à la miniature (Ex : "ma-photo.jpg" devient "mini-ma-photo.jpg"
- $supprimer_original : Si est égal à true on supprime l'image originale
*/
function make_miniature($img='./Images/ImageWalter/big_bang.jpg', $max_width=400, $max_height=400, $repertoire_destination='./Images/ImageWalter/', $prefixe='mini-', $supprimer_original=false)
{
/*Initialisations*/
$message = '';
/*On recupere le nom de l'image*/
$base = basename($img);
/* eliminer miniature de miniature */
if (substr($base,0,4) != 'mini')
{
$nom = $prefixe.$base;
/*on teste si le fichier miniature n'existe pas déjà*/
$dest = $repertoire_destination.$nom;
if (file_exists($dest) === false)
{
/*on ouvre le fichier image*/
$file = fopen($img,'r');
if ($file != false) //Le fichier existe
{
/*getimagesize() renvoie FALSE si le fichier n'est pas une image*/
if (false != list($largeur_orig,$hauteur_orig,$extension) = getimagesize($img))
{
$extension_img = substr(strchr($img,'.'),1);
/*On vérifie que le fichier soit bien au format jpg, gif ou png*/
if (($extension_img == 'jpeg') OR ($extension_img == 'jpg') OR ($extension_img == 'gif') OR ($extension_img == 'png'))
{
switch ($extension)
{
case 1: // GIF
$type_img = imagecreatefromgif($img); break;
case 2: //JPEG
$type_img = imagecreatefromjpeg($img); break;
case 3: // PNG
$type_img = imagecreatefrompng($img); break;
}
/*On verifie la taille*/
if(($largeur_orig > $max_width) || ($hauteur_orig > $max_height))
{
// si l'image est trop large ou trop haute
if ($largeur_orig > $hauteur_orig)
{
// image plus large que haute
$hauteur = round(($hauteur_orig * $max_width) / $largeur_orig);
$largeur = $max_width;
}
else
{
// image plus haute que large
$hauteur = $max_height;
$largeur = round(($largeur_orig * $max_height) / $hauteur_orig);
}
}
else
{
$largeur = $largeur_orig;
$hauteur = $hauteur_orig;
}
/*On crée la miniature*/
$src = imagecreatetruecolor($largeur,$hauteur);
imagecopyresized($src,$type_img,0,0,0,0,$largeur,$hauteur,$largeur_orig,$hauteur_orig);
/*On sauvegarde la miniature*/
imagejpeg($src, $repertoire_destination.$nom);
/*On libere la memoire utilisée par cette image.*/
imagedestroy($src);
/*On supprime éventuellement l'image originale*/
if ($supprimer_original == true)
unlink($img);
return true;
}
else
{
$message = 'Erreur : L\'extension de l\'image est '.$extension_img.' ! Elle devrait être JPG, JPEG, GIF ou PNG';
}
}
else
{
$message = 'Erreur : Le fichier '.$img.' n\'est pas une image !';
}
}
else
{
$message = 'Erreur : Le fichier '.$img.' n\'existe pas !';
}
}
}
if (strlen($message) > 0)
print "<br/>$message";
return false;
}
/*Fonction qui lit les images d'un dossier
Liste des paramètres :
- $dir_source : Chemin relatif du répertoire dans lequel se trouve les images
*/
function read_dir($dirsource)
{
$filelist = array();
if ($dir = @opendir($dirsource))
{
while (($file = readdir($dir)) != false)
{
if($file != ".." && $file != ".")
$filelist[] = $file;
}
closedir($dir);
}
//Test a faire pour ne pas avoir d'erreur si il n'y a pas d'image dans le dossier
if(sizeof($filelist) != '0')
sort($filelist);
return $filelist;
}
$location_dir = "Images/ImagesPeintres/"; // dossier ou sont les dossier images
/* lire les sous dossiers du dossier */
$dir_list = read_dir($location_dir);
/* pour chaque dossier image, récupérer les images */
$count_dir = count($dir_list);
$creation_mini = false;
for ($i = 0; $i < $count_dir; $i++)
{
$file_list = read_dir($location_dir.$dir_list[$i]);
/* pour chaque image créer la miniature */
$count = count($file_list);
$dir = $location_dir.$dir_list[$i].'/';
for ($j = 0; $j < $count; $j++)
{
$file = $dir.$file_list[$j];
/* tester si le fichier est de type image */
$desc_image= getImageSize($file);
$type_image= $desc_image[2];
if ($type_image==1 || $type_image==2 || $type_image==3)
{
if (make_miniature($file,200,200,$dir,'mini-') == true)
$creation_mini = true;
}
}
}
if ($creation_mini == true)
print "Création des miniatures effectuée <br/>";
?>
</body>
</html> |
Partager