Ajax HTML 5 JavaScript Création site CMS Comment Design Logiciels Programmation RSS SQL Scripts Mobiles
Forum
COMMENT FAIRE
Anti Safari
Localiser portable
Galerie d'images
Redirection
Google Maps
Ecrire pour le Web
Passer intro video
CONCEPTION
Approche Ajax
Lecteur RSS
Bases SEO
DESIGN
Tutoriel Adsense
Essentiel Web design
SCRIPTS
Outils en ligne
FTP Synchronizer


Vignettes d'images centrées en PHP

Créer des vignettes: Troisième partie

Dans la première partie de ce tutoriel nous avons vu comment créer des vignettes d'images.
Le script a été développé dans la seconde partie pour permettre de réaliser des galeries de vignettes de taille uniforme.

Cependant les images ont encore le défaut d'être rognée sur la partie droite ou sur le bas, or il vaudrait mieux centrer la vignette en rognant des deux cotés à la fois. En outre le script traite uniquement des images au format jpg, et il convient de l'étendre aux autres formats graphiques courants sur le Web: gif et png.

Centrer la vignette

On ajoute deux variables de décalage:

$xoff = 0;
$yoff = 0;

Le déplacement est la différence entre la hauteur de l'image intermédiaire et la hauteur de la vignette finale, ou la largeur.

Lorsque la hauteur doit être rognée, on ajoute au script cette ligne pour calculer l'offset vertical:

$yoff = intval(($nh - $thumbh) / 2); 

et si c'est la largeur:

$xoff = intval(($nw - $thumbw) / 2);

ensuite on incorpore ces déplacements en paramètre de la fonction qui recopie une partie de l'image intermédiaire:

imagecopy($viewimage, $newimage, 0, 0, $xoff, $yoff, $nw, $nh);

Traiter différents formats graphiques

Un tableau contient les principaux formats reconnus par PHP, en associant à l'extension du fichier un code d'image:

$types = array("jpeg"=>IMG_JPG, "jpg"=>IMG_JPG, "gif"=>IMG_GIF, "png"=>IMG_PNG );

function getImageType($name)
{
  global $types;
  
  $way = pathinfo($name);
  $ext = strtolower($way['extension']);
  $t = $types[$ext];
  return $t;  
}

La fonction PHP pathinfo place dans un tableau les composantes d'un chemin de fichier, parmi lesquelles on retrouve l'extension.

En fonction du code de type retourné, on sélectionne la fonction de lecture d'image:

$t = getImageType($oldname); 

switch($t)
{
    case IMG_JPG: $resimage = imagecreatefromjpeg($oldname);
                  break;
    case IMG_GIF: $resimage = imagecreatefromgif($oldname);
                  break;
    case IMG_PNG: $resimage = imagecreatefrompng($oldname);
                  break;                  
}  

Télécharger le script

L'archive contient le script PHP et les images de la galerie ci-dessous.

  • Script PHP de création de vignettes centrées.
  • Voir le code source.

Galerie de vignettes


Tweet
© 2008-2011 Scriptol.fr