Optimiser les images
Posté : 26 juin 2016, 10:22
Salut à tous.
J'ai un bout de code qui me permet de redimenssioner mes photos et de les enregistré dans un repertoire.
Ceci dit j'aimerais également optimiser les images
J'ai un bout de code qui me permet de redimenssioner mes photos et de les enregistré dans un repertoire.
Ceci dit j'aimerais également optimiser les images
<?php
// Retouche d'image pour qu'elle soit parfaite
function imageParfaite($width, $height, $originalFileName, $destinationFileName=NULL, $fullsize=0) {
$message = NULL;
$destinationFileName = !empty($destinationFileName) ? $destinationFileName : $originalFileName;
// Verification des côtes
list($gWidth, $gHeight) = getimagesize($originalFileName);
if(($gWidth != $width) || ($gHeight != $height)) {
// On verifie que l'image est pas trop petite
if(($gWidth > $width) && ($gHeight > $height)) {
// On la met en full size ou non
if($fullsize == 1) {
$finalWidth = $gWidth*($height/$gHeight);
$finalHeight = $gHeight*($width/$gWidth);
// Si l'image est plus large
if($width > $height) {
// Si on veut une image en largeur
if(($gWidth > $gHeight)) {
// Si la largeur finale est inférieur à la largeur que l'on veut
($finalWidth > $width) ? createMiniature($originalFileName, $destinationFileName, NULL, $height) : createMiniature($originalFileName, $destinationFileName, $width);
} else {
($finalHeight > $height) ? createMiniature($originalFileName, $destinationFileName, $width) : createMiniature($originalFileName, $destinationFileName, NULL, $height);
}
} else {
// Si on veut une image en hauteur
if(($gWidth < $gHeight)) {
// Si la largeur finale est inférieur à la largeur que l'on veut
($finalWidth > $width) ? createMiniature($originalFileName, $destinationFileName, NULL, $height) : createMiniature($originalFileName, $destinationFileName, $width);
} else {
($finalHeight > $height) ? createMiniature($originalFileName, $destinationFileName, $width) : createMiniature($originalFileName, $destinationFileName, NULL, $height);
}
}
} else {
// On redimensionne l'image avec la taille la plus petite
$message .= ($gWidth > $gHeight) ? createMiniature($originalFileName, $destinationFileName, $width) : createMiniature($originalFileName, $destinationFileName, NULL, $height);
}
// On crée l'image parfaite
$message .= makeSample($destinationFileName, $destinationFileName, $width, $height);
} else {
$message .= ($gWidth > $gHeight) ? createMiniature($originalFileName, $destinationFileName, $width) : createMiniature($originalFileName, $destinationFileName, $width, NULL, $height);
// L'image etait plus petite, on l'habille
$message .= makeSample($destinationFileName, $destinationFileName, $width, $height);
}
} else {
// Si l'image est different de la destination alors on copie la même image ailleurs
if($originalFileName != $destinationFileName) {
copy($originalFileName, $destinationFileName);
$return .= "<br />L'image <strong>".$fichier."</strong> n'avait pas besoin d'être miniaturisée. Elle a juste été dupliquée vers la nouvelle destination.";
}
}
return $message;
}
?>
Et on enregistre les photos dans ma page du formulaire:
// Upload des fichier
$namefile = '';
if(!empty($_FILES)) {
if(!empty($_FILES['photo']['tmp_name'])) {
$path = 'img/img-big-format/';
$namefile = filename($_FILES['photo']['name'], $_POST['titre']);
$return = upload($_FILES['photo'], $namefile, $path, array('image/jpg', 'image/jpeg'));
$message = $return[0];
$erreur = $return[1];
if($erreur <= 1) {
imageparfaite(600, 400, $path.$namefile, $path.$namefile, 1);
} else {
$erreurs['image'] = $message;
}
}
}