Redimention d'image, librairie gd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 732 fois - Téléchargée 16 fois

Contenu du snippet

Bonjour, j'ai créé cette fonction qui permet de redimentionner une image jpg, gif, ou png, elle utilise la librairie GD de php.

liste des arguments :
$source_url est l'image source, ex : images/1.jpg
$destination_url est l'image destination, ex : images/1_mini.jpg
$taille est la taille de la miniature, appliquée soit a la largeur soit à la heuteur (voir code ci-dessous)
$type est le type de l'image, par défaut jpg, il peut être gif, GIF, png, PNG, jpg, jpeg, JPEG
$save définie si l'on veux quand même enregistrer l'image même si la miniature n'a pas été créée
TRUE si on veux quand même enregistrer
FALSE si on ne veux pas

Source / Exemple :


function mini_image($source_url, $destination_url, $taille, $type='jpeg', $save=1) {

/*
$source_url est l'image source, ex :  images/1.jpg
$destination_url est l'image destination, ex : images/1_mini.jpg
$taille est la taille de la miniature, appliquée soit a la largeur soit à la heuteur (voir code ci-dessous)
$type est le type de l'image, par défaut jpg, il peut être gif, GIF, png,  PNG, jpg, jpeg, JPEG
$save définie si l'on veux quand même enregistrer l'image même si la miniature n'a pas été créée
	TRUE si on veux quand même enregistrer
	FALSE si on ne veux pas
	
créé par o-thib-o */

	if (preg_match('#jpe?g#i', $type)) {
	$source = imagecreatefromjpeg($source_url); // si l'image est un jpg
	$ext = 1;}
	
	elseif (preg_match('#png#i', $type)) {
	$source = imagecreatefrompng($source_url); // si l'image est un png
	$ext = 2;}
	
	elseif (preg_match('#gif#i', $type)) {
	$source = imagecreatefromgif($source_url); // si l'image est un gif
	$ext = 3;}
	
	$largeur_source = imagesx($source); // on détermine les dimentions de l'image source
	$hauteur_source = imagesy($source);
	
	// On n'effectue la redimention seulement si la miniature que l'on veux faire est plus petite que la source
	if ($taille < $largeur_sourc OR $taille < $hauteur_source) { 
		
		/* On regarde la  plus grande des deux simentions de l'image

  • Si la largeur est plus grande que la hauteur on calculera la miniature à partir ce celle-ci
  • et inversement pour éviter que des image par example qui font 10x600 soient mal redimentionnées */
if ($largeur_source > $hauteur_source) { $largeur_destination = $taille; $hauteur_destination = $largeur_destination * $hauteur_source / $largeur_source; } else { $hauteur_destination = $taille; $largeur_destination = $hauteur_destination * $largeur_source / $hauteur_source; } $destination = imagecreatetruecolor($largeur_destination, $hauteur_destination); // On crée la miniature vide // On crée la miniature imagecopyresampled($destination, $source, 0, 0, 0, 0, $largeur_destination, $hauteur_destination, $largeur_source, $hauteur_source); //on enregistre la miniature que l'on viens de créé switch ($ext) { case 1 : imagejpeg($destination, $destination_url); break; case 2 : imagepng($destination, $destination_url); // malheuresement je n'ai pas trouver le moyen de redimentionner les png 24bits en gardant la transparence break; case 3 : imagegif($destination, $destination_url); break; } return 1; // l'image a été enregistrée on retourne TRUE } // si on a pas créé la miniature car elle étais plus grande que la source else { if ($save) { copy($source_url,$destination_url); // on copie quand même l'image return 1; // l'image a été enregistrée on retourne TRUE } else { return 0; // rien n'a été faits, on retourne FALSE } } }

Conclusion :


Voila j'espers que cette source vous aura été utile, si vouzs avez des remarques a faire n'hésitez pas je suis ouvert à toute critique =)

A voir également

Ajouter un commentaire

Commentaires

DarkM60
Messages postés
37
Date d'inscription
dimanche 15 mai 2005
Statut
Membre
Dernière intervention
21 septembre 2009
-
if ($taille < $largeur_sourc OR $taille < $hauteur_source) {

Evite ce genre d'erreurs bêtes... Teste ton code avant de le mettre en ligne. Rajoute le "e" qui manque à largeur_sourc

DarkM
LeFauve42
Messages postés
239
Date d'inscription
vendredi 20 octobre 2006
Statut
Membre
Dernière intervention
20 avril 2009
-
VIKI53: Verifie avec un phpinfo() que l'extension GD2 est bien activee sur ton serveur.
17l7
Messages postés
8
Date d'inscription
dimanche 10 décembre 2006
Statut
Membre
Dernière intervention
18 octobre 2008
-
example :

tu a une image nommée image.jpg située dans le dossier images
et tu veux la redimentionner et l'enregistrer dans le dossier images_mini

<?php
//tu déclare la fonction

if (mini_image('images/image.jpg', 'images_mini/image.jpg', 200, 'jpg')) {
echo 'Images correctement redimentionnée'; }
else {
echo 'erreur'; }
?>

voilà voilà pour le petit example ^^
viki53
Messages postés
31
Date d'inscription
samedi 9 février 2008
Statut
Membre
Dernière intervention
11 septembre 2008
-
Un p'tit exemple d'utilisation ?

Parce que j'sais pas pourquoi mais ça veut pas marcher. o_O

Ça me dit que la fonction n'existe pas. :s

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.