Redimensionnement automatique d'images

Soyez le premier à donner votre avis sur cette source.

Snippet vu 17 404 fois - Téléchargée 19 fois

Contenu du snippet

La création de miniatures est souvent synonyme de difficulté pour les codeurs débutants.
Sachant que j'en suis presque un, je me suis penché sur une fonction toute simple, qui ni ne crée pas d'image supplémentaire, ni n'utilise la librairie GD ; le bohneur quoi.

Cette fonction je l'utilise dans mon fichier fonction.inc.php que j'inclus sur toutes les pages donc la fonction doit être accessible au moins sur la page ou vous voullez afficher votre miniature...

Les paramètres sont les suivant :

- $img : chemin de l'image (uploads/avatars/image.gif)
- $w_max : Largeur maximale que vous envoyez sous forme de chiffre
- $h_max : Hauteur maximale

Sans plus tarder, voici le code.

EDIT : Calcul du rapport

Source / Exemple :


function redimenssion($img, $w_max, $h_max){

	$size_img = getimagesize($img);		// Dimensions de l'image de base
	
	$w_img = $size_img[0];				// Largeur de l'image de base
	$h_img = $size_img[1];				// Hauteur de l'image de base
	
	$rapport = $w_max / $w_img;		// Rapport
	
	$w_final = ceil($w_img * $rapport);		// Largeur miniature arrondie
	$h_final = ceil($h_img * $rapport);		// Hauteur miniature arrondie
	
	$size_final = array($w_final, $h_final);	// Mise en tableau des dimensions finales
	
	return $size_final;	// On retourne les dimensions de la miniature sous forme de tableau

}

$mini_img = redimenssion('uploads/avatars/image.gif', 100, 100);    // Appel de la fonctions

<img src="'.$img.'" width="'.$mini_img[0].'" height="'.$mini_img[1].'" alt="" />

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
lundi 19 janvier 2009
Statut
Membre
Dernière intervention
18 mars 2009

Salut, merci pour ton code je m'en suis servi pour redimensionner une image, par contre dans l'état actuelle des choses la redimension ne se fait pas selon les limites imposés mais selon le rapport choisi, je l'ai un peu modifié pour qu'il ne dépasse pas les largeur et hauteur max défini. Je suis pas un pro codeur mais en tout cas ça marche, si ça peut servir à quelqu'un :

function redimenssion($img, $w_max, $h_max){

$size_img = getimagesize($img); // Dimensions de l'image de base

$w_img = $size_img[0]; // Largeur de l'image de base
$h_img = $size_img[1]; // Hauteur de l'image de base

if (($w_img<=$w_max)AND($h_img<=$h_max)){
$size_final = array($w_img, $h_img); // Si l'image est plus petite que le max on ne la modifie pas
} else {

$rapport = $h_max / $h_img; // Rapport de reduction

$w_final = ceil($w_img * $rapport); // Largeur miniature arrondie
$h_final = ceil($h_img * $rapport); // Hauteur miniature arrondie

if ($w_final>$w_max){
// si la largeur finale dépasse la largeur max on re-dimensionne
$w_final=$w_max; // On transforme la largeur en largeur max la largeur
$rapportReductionmax=$w_final/$w_max; // On calcul le nouveau rapport
$h_final = ceil($h_img * $rapportReductionmax); // On en déduit la nouvelle hauteur
} else if ($h_final>$h_max) {
// si la hauteur finale dépasse la hauteur max on re-dimensionne
$h_final=$h_max; // On transforme la hauteur en hauteur max la largeur
$rapportReductionmax=$h_final/$h_max; // On calcul le nouveau rapport
$w_final = ceil($w_img * $rapportReductionmax); // On en déduit la nouvelle largeur
}

$size_final = array($w_final, $h_final); // Mise en tableau des dimensions finales
}
return $size_final; // On retourne les dimensions de la miniature sous forme de tableau

}
Messages postés
7
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
17 avril 2008

oui, sa je le sait merci, mais se que je voulait dire, c'est que le calcule qui est fait plus haut pour calculer le bon raport hauteur - largeur est inutile, il suffit par exemple d'écrire juste la hauteur, et le navigateur se garge de calculer la largeur!
Messages postés
41
Date d'inscription
mercredi 21 septembre 2005
Statut
Membre
Dernière intervention
3 novembre 2008

hugsgiver, la taille en octet correspond à la qualité de l'image et à sa taille. Pour avoir une taille plus petite en octet, il faut réduire l'image et sa qualité.
Bien sur qu'il faut utiliser la librairie GD. C'est elle qui te permettra de réduire l'image et sa qualité.
Et l'exemple que tu as donné, tu affiche l'image avec une taille peut être réduite mais que en affichage. Si tu as une image de 1280*1024, tu l'affichera peut être en 200*(ratio) mais le chargement sera très long surtout quand c'est une galerie. Car tu charges l'image en 1280*1024 et non 200*(ratio). D'où l'intérêt de charger l'image dans un poids plus petit.
Messages postés
7
Date d'inscription
lundi 3 décembre 2007
Statut
Membre
Dernière intervention
17 avril 2008

Moi je pensait trouver une fonctionpour réduire la taille en octet, vous vous compliquez bien la tête, sa c facile se que vous avez fait, il y a plus simple, et la vous êtes sur que le taille n'est pas déformé:


echo "";


moi je vait plutot me pencher sur la librairie gd!
Messages postés
4
Date d'inscription
samedi 10 avril 2004
Statut
Membre
Dernière intervention
6 février 2008

Un poids identique.
Afficher les 24 commentaires

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.