Une fois votre image "film_38.png" enregistrée, vous allez (1) gérer la fonction de création de miniatures, (2) appeler correctement la nouvelle fonction.
Si le fichier helpers.php
n'existe pas, crééez-le.
Vous ajouterez dans helpers.php
(assurez vous bien d'appeler le helper dans le fichier avec require
bien sûr !) la fonction suivante :
/**
* Permet de créer une miniature au format 300x300 d'une image source.
* Les extensions acceptées sont : jpg, jpeg, png et gif.
*
* @param string $titreAncienneImage Titre avec extension de l'image de départ
* @param string $extension Extension de l'image de départ
* @param string $dossierEnregistrement Dossier de stockage des images (sans "/")
* @param string $titreNouvelleImage Titre avec extension de l'image d'arrivée
*
* @return boolean True si l'image a été créée, False s'il y a un problème d'extension.
*/
function createMiniature($titreAncienneImage, $extension, $dossierEnregistrement, $titreNouvelleImage){
$cheminSource = $dossierEnregistrement . '/' . $titreAncienneImage;
$cheminDestination = $dossierEnregistrement . '/' . $titreNouvelleImage;
switch ($extension) {
case 'jpg':
$source = imagecreatefromjpeg($cheminSource);
break;
case 'jpeg':
$source = imagecreatefromjpeg($cheminSource);
break;
case 'png':
$source = imagecreatefrompng($cheminSource);
break;
case 'gif':
$source = imagecreatefromgif($cheminSource);
break;
default:
return false;
break;
}
$destination = imagecreatetruecolor(300, 300); // On crée la miniature vide
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
// On crée la miniature
imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source);
// On enregistre la miniature sous le nom "mini_couchersoleil.jpg"
imagejpeg($destination, $cheminDestination);
switch ($extension) {
case 'jpg':
imagejpeg($destination, $cheminDestination);
return true;
break;
case 'jpeg':
imagejpeg($destination, $cheminDestination);
return true;
break;
case 'png':
imagepng($destination, $cheminDestination);
return true;
break;
case 'gif':
imagegif($destination, $cheminDestination);
return true;
break;
default:
return false;
break;
}
}
Cette fonction prend 4 arguments :
/*
* @param string $titreAncienneImage Titre avec extension de l'image de départ
* @param string $extension Extension de l'image de départ
* @param string $dossierEnregistrement Dossier de stockage des images (sans "/")
* @param string $titreNouvelleImage Titre avec extension de l'image d'arrivée
Nous travaillerons dans la partie qui se situe juste après l'update
de la base de données.
Après s'être assuré de bien avoir inclus le helper, Nous allons devoir appeler la fonction de création de miniature dans notre code, juste après l'update
. Pour cela, il va falloir préparer les 4 arguments requis :
$titreAncienneImage = ...; // Le nom de l'image de départ AVEC extension
$extension = ...; // L'extension de départ
$dossierEnregistrement = ...; // Le dossier de stockage des images, sans "/" !!!
$titreNouvelleImage = ...; // Le nom de la nouvelle image AVEC extension
// Enfin, on appelle la fonction !
createMiniature($titreAncienneImage, $extension, $dossierEnregistrement, $titreNouvelleImage);
Aidez-vous des variables qui existent déjà dans votre code plus haut ! Vous avez déjà traité plusieurs informations pour enreigstrer l'image de base, toutes ces données sont accessibles.
Indice : pour préparer le $titreNouvelleImage
, vous le composerez comme suit :
$titreNouvelleImage = $nomAncienneImageSansExtension . '_300x300.' . $extension;
Enfin, vous prendrez soin de vérifier que l'image au format 300x300 s'enregistre bien dans le dossier de destination.