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 :

Instruction SWITCH
Formulaire de paiement paypal en PHP
Comment formater un grand nombre à l'affichage pour le rendre plus lisible (en PHP)
Parcourir les images d'un répertoire en PHP
Problème : header("Location ... ne marche pas
Fonction explode en utilisant plusieurs séparateurs
Vérifier la validité du format d'un email en PHP - Expression régulière
Fonction PHP qui permet de savoir si un répertoire est vide ou pas
Fermeture de sessions
Mettre en gras les occurrences d'un mot dans une phrase en PHP
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