Je vous laisse un petit script que je me suis adapté pour mes besoins personnel.
Il permet de créer une vignette à partir d'une image originale.
La vignette est enregistré sur le serveur et ne peut être supérieure à la taille de l'original.
Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre).
Vous me direz ainsi si je peux l'optimiser un peu
:wink:
Il permet de créer une vignette à partir d'une image originale.
La vignette est enregistré sur le serveur et ne peut être supérieure à la taille de l'original.
Le script prend en compte les images png et jpeg (le gif n'étant plus dans le domaine libre).
Vous me direz ainsi si je peux l'optimiser un peu
Code:
/**********************************************************************
- vignette($file, $maxWidth = 450, $maxHeight = 350)
- Création d'une vignette à partir d'une image ($file)
- Les extension prise en compte sont jpg et png (le gif est remplacé par le png ; le gif animé n'est jamais redimensionné)
- Dernière version : 27/11/2006
* $file : chemin vers le fichier image à redimensionner
* $maxWidth : largeur maximum que dois faire la miniature (450 par défaut)
* $maxHeight : Hauteur maximum que dois faire l'image (350 par défaut)
**********************************************************************/
function vignette($file, $maxWidth = 450, $maxHeight = 350){
// Vérification des erreurs dans les paramètres de la fonction
//============================================================
if(!file_exists($file)){
// Si le fichier passé en paramètre n'existe pas
return 'Le fichier '.$file.' n\'a pas été trouvé sur le serveur.';
}
elseif(empty($file)){
// Si le fichier n'a pas été indiqué
return 'Nom du fichier non renseigné.';
}
elseif(!is_numeric($maxWidth) || empty($maxWidth) || $maxWidth < 0){
// Si la largeur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
return 'Valeur de la largeur incorrecte.';
}
elseif(!is_numeric($maxHeight) || empty($maxHeight) || $maxHeight < 0){
// Si la hauteur max est incorrecte (n'est pas numérique, est vide, ou est inférieure à 0)
return 'Valeur de la hauteur incorrecte.';
}
//============================================================
$fichier = realpath($file); // Chemin canonique absolu de l'image
$dir = dirname($file).'/'; // Chemin du dossier contenant l'image
$infoImg = getimagesize($fichier); // Récupération des infos de l'image
$imgWidth = $infoImg[0]; // Largeur de l'image
$imgHeight = $infoImg[1]; // Hauteur de l'image
// Initialisation des variables selon l'extension de l'image
switch($infoImg[2]){
case 2:
$img = imagecreatefromjpeg($fichier); // Création d'une nouvelle image jpeg à partir du fichier
$extImg = '.jpg'; // Extension de l'image
break;
case 3:
$img = imagecreatefrompng($fichier); // Création d'une nouvelle image png à partir du fichier
$extImg = '.png';
}
// Initialisation des dimensions de la vignette si elles sont supérieures à l'original
if($maxWidth > $imgWidth){ $maxWidth = $imgWidth; }
if($maxHeight > $imgHeight){ $maxHeight = $imgHeight; }
$whFact = $maxWidth/$maxHeight; // Facteur largeur/hauteur des dimensions max de la vignette
$imgWhFact = $imgWidth/$imgHeight; // Facteur largeur/hauteur de l'original
// Fixe les dimensions de la vignette
if($whFact < $imgWhFact){
// Si largeur déterminante
$thumbWidth = $maxWidth;
$thumbHeight = $thumbWidth / $imgWhFact;
} else {
// Si hauteur déterminante
$thumbHeight = $maxHeight;
$thumbWidth = $thumbHeight * $imgWhFact;
}
$imgThumb = imagecreatetruecolor($thumbWidth, $thumbHeight); // Création de la vignette
imagecopyresized($imgThumb, $img, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $imgWidth, $imgHeight); // Insère l'image de base redimensionnée
$fileName = basename($file, $extImg); // Nom du fichier sans son extension
$imgThumbName = $dir.$fileName.'-min'.$extImg; // Chemin complet du fichier de la vignette
//Création du fichier de la vignette
$fp = fopen($imgThumbName, "w");
fclose($fp);
// Renvoi la vignette créée
switch($infoImg[2]){
case 2:
imagejpeg($imgThumb, $imgThumbName, 50); // Renvoi d'une image jpeg avec une qualité de 50
break;
case 3:
imagepng($imgThumb, $imgThumbName);
}
return $imgThumbName;
}