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;
}
}
}