Skip to content

Instantly share code, notes, and snippets.

@tomsihap
Last active November 6, 2019 08:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tomsihap/4268fa4b19d4d66c61e54cd032699559 to your computer and use it in GitHub Desktop.
Save tomsihap/4268fa4b19d4d66c61e54cd032699559 to your computer and use it in GitHub Desktop.
Développement complémentaires (2)

Développements complémentaires (2)

Comment redimensionner mon fichier en "film_38_300x300.png" ?

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.

1. Ajout dans le Helper de la fonction de création de miniatures

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

2. Modification du script de traitement des images

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment