le MEMO du WEB développeur
••• PHP •••  Liste des Mémos, astuces et bonnes pratiques

Redimensionner une image en PHP

Voici ci dessous le code d'une fonction PHP permettant de redimensionner une image sans la déformer, les paramètres de la fonction sont les suivant :

$source : L'image à redimensionner 
$type_value : Le type correspondant à la valeur fixe définie par le paramètre suivant (W : largeur / H : hauteur)
$new_value : La valeur qui sera fixe (liée à l'argument suivant)
$compression : Le degré de compression (de 0 à 100) $sortie : Si nous souhaitons enregistrer l'image, le chemin du fichier

Fonction de retaillage d'une image 

<?php
function RedimensionnerImage($source, $type_value = "W", $new_value,  $compression = 70, $sortie = "") {
  /*
    Récupération des dimensions de l'image afin de vérifier
    que ce fichier correspond bel et bien à un fichier image.
    Stockage dans deux variables le cas échéant.
  */
  if( !( list($source_largeur, $source_hauteur) = @getimagesize($source) ) ) {
    return false;
  }
  /*
    Calcul de la valeur dynamique en fonction des dimensions actuelles
    de l'image et de la dimension fixe que nous avons précisée en argument.
  */
  if( $type_value == "H" ) {
    $nouv_hauteur = $new_value;
    $nouv_largeur = ($new_value / $source_hauteur) * $source_largeur;
  } else {
    $nouv_largeur = $new_value;
    $nouv_hauteur = ($new_value / $source_largeur) * $source_hauteur;
  }
  /*
 Création du conteneur, c'est-à-dire l'image qui va contenir la version
  redimensionnée. Elle aura donc les nouvelles dimensions.
  */
  $image = imagecreatetruecolor($nouv_largeur, $nouv_hauteur);
  /*
    Importation de l'image source. Stockage dans une variable pour pouvoir
    effectuer certaines actions.
  */
  $source_image = imagecreatefromstring(file_get_contents($source));
  /*
    Copie de l'image dans le nouveau conteneur en la rééchantillonant. Ceci
    permet de ne pas perdre de qualité.
  */
  imagecopyresampled($image, $source_image, 0, 0, 0, 0, $nouv_largeur, $nouv_hauteur, $source_largeur, $source_hauteur);
  /*
    Si nous avons spécifié une sortie et qu'il s'agit d'un chemin valide (accessible
    par le script)
  */
  if(strlen($sortie) > 0 and @touch($sortie)) {
    /*
     Enregistrement de l'image et affichage d'une notification à l'utilisateur.
    */
    imagejpeg($image, $sortie, $compression);
    echo "Fichier sauvegardé.";
  /*
    Sinon...
  */
  } else {
    /*
     ...Nous indiquons au navigateur que nous affichons une image en définissant le
     header et nous affichons l'image.
    */
    header("Content-Type: image/jpeg");
    imagejpeg($image, NULL, $compression);
  }
  /*
    Libération de la mémoire allouée aux deux images (sources et nouvelle).
  */
  imagedestroy($image);
  imagedestroy($source_image);
}
?>

 

publié le 10/06/2013 par Memo Web
Commentaire :
Je vérifie d'abord si le code marche...Merci
par inconnu, le 08/12/2014
Bonne base pour ce que je voulais faire, merci...
par inconnu, le 31/10/2014
marche pas !
par inconnu, le 18/03/2014
Commenter le Mémo :

Fonction de parcours des variables de formulaire
Transformer une date format français en format SQL
Parcourir les fichiers d'un répertoire en PHP
Bonnes pratiques : Utilisez des simples quotes dans les chaînes PHP
Fermeture de sessions
Formater une chaine en URL
Garder une variable de session après fermeture du navigateur
Tester format de chaîne style mot de passe
Parcourir les images d'un répertoire en PHP
Espaces parasites rajoutés lors d'un envoi de mail
Ajoutez vos propres Mémos sur MEMO-WEB

Il suffit de vous créer un compte sur le site

Vous pourrez choisir un thème parmis l'une des catégories proposées par MEMO-WEB.

Rédigez votre Mémo.
Après validation par MEMO-WEB, il sera mis en ligne.
Ajouter vos Mémos