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
| //###########################################################
//# -Génère la miniature de l'image dans le sous-répertoire #
//###########################################################
// Génère la miniature de l'image dans le sous-répertoire 'miniature' si elle n'existe pas déjà
function genere_miniature($Nom_Dossier_Miniature)
{
// Calcul du ratio entre la grande image et la miniature
$taille_max = 100;
if ($this->getLargeur() <= $this->getHauteur())
{
$ratio = $this->getHauteur() / $taille_max;
}
else
{
$ratio = $this->getLargeur() / $taille_max;
}
// Définition des dimensions de la miniature
$larg_miniature = $this->getLargeur() / $ratio;
$haut_miniature = $this->getHauteur() / $ratio;
// Crée la ressource image pour la miniature
$destination = imagecreatetruecolor($larg_miniature, $haut_miniature);
// Retourne un identifiant d'image jpeg, gif ou png
$source = $this->call_user_func_1($this->type, $this->chemin_cible.$this->getNom());
// Redimensionne la grande image
imagecopyresampled( $destination, $source,
0, 0, 0, 0,
$larg_miniature,
$haut_miniature,
$this->getLargeur(),
$this->getHauteur());
// Si le répertoire de miniature n'existe pas, on le crée
if (!is_dir($this->chemin_cible.$Nom_Dossier_Miniature))
{
mkdir ($this->chemin_cible.$Nom_Dossier_Miniature, 0700);
}
//Chemin de la nouvelle miniature
$chemin_miniature = $this->chemin_cible.$Nom_Dossier_Miniature."/mini_".$this->getNom();
print $chemin_miniature;
// Ecriture physique de l'image
$this->call_user_func_2($this->type, $chemin_miniature);
// Détruit les ressources temporaires crées
imagedestroy($destination);
imagedestroy($source);
}
//############################################################
//# -Fonction pour l'extention du fichier (jpeg,gif ou png)- #
//############################################################
private function call_user_func_1($extension, $chemin_image)
{
// $chemin_image= ./upload_image/P1010012.JPG
switch ($extension)
{
case 'image/jpeg':
$source = imagecreatefromjpeg($chemin_image);
break;
case 'image/gif':
$source = imagecreatefromgif($chemin_image);
break;
case 'image/png':
$source = imagecreatefrompng($chemin_image);
break;
return $source;
}
}
//################################################################
//# -Fonction Ecriture physique de l'image avec call_user_func - #
//################################################################
private function call_user_func_2($extension, $destination, $chemin_miniature)
{
// $chemin_miniature = ./upload_image/Mini_Image/mini_P1010012.JPG
switch ($extension)
{
case 'image/jpeg':
$source = imagejpeg($destination, $chemin_miniature);
break;
case 'image/gif':
$source = imagegif($destination, $chemin_miniature);
break;
case 'image/png':
$source = imagepng($destination, $chemin_miniature);
break;
return $source;
}
} |
Partager