Snippet : redimensionner un image sans utiliser la biblio gd

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 385 fois - Téléchargée 17 fois

Contenu du snippet

Ce snippet permet de récupérer une paire width / height pour une image donnée en fonction des dimensions maxi de la zone d'affichage.
En gros, si je veux afficher une image qui fait 192x147 dans une boite qui fait 145x145, le code me renvois les bonnes valeurs à afficher dans les attributs de l'image.
Ex:
list($image_width,$image_height) = image_shrink('documents/' . $galleries_documents_content['documents_nom'],193,147);

echo '<img src="documents/' . $galleries_documents_content['documents_nom'] . '" width="' . $image_width . '" height="' . $image_height . '"/>';'

Source / Exemple :


//Génère une paire d'attribus image_width / image_height en fonction des dimmensions max fournies
//$image_name :  chemin complet vers l'image relatif à la position actuelle du script ex: 'documents/ordi.jpg'
//$max_width : largeur maxi de l'image
//$max_height : hauteur maxi de l'image

function image_shrink($image_name,$max_width,$max_height)
{
        $image_info = getimagesize($image_name);   // on récupère les info de l'image en cours
        $image_width = $image_info[0];             // la largeur actuelle
        $image_height = $image_info[1];            // la hauteur actuelle
        $image_ratio_width = ($max_width / $image_width);      // ratio horizontal
        $image_ratio_height = ($max_height / $image_height);   // ration vertical

        if(($image_ratio_width < 1) OR ($image_ratio_height < 1))    // si l'un des ration est < 1; il faut redimensionner
        {
                $image_ratio = (($image_ratio_width > $image_ratio_height)?$image_ratio_height:$image_ratio_width);   // on s'appuis sur le plus petit ratio
                $image_width = ($image_width * $image_ratio);           // on applique le ration sur la largeur
                $image_height = ($image_height * $image_ratio);         // on applique le ratio sur la hauteur
        }

        return(array($image_width,$image_height));       // retour à l'envoyeur

}

Conclusion :


Comme ça, l'image reste proportionnée et ne déforme pas le cadre de destination.

A voir également

Ajouter un commentaire

Commentaires

cs_marm0tte
Messages postés
200
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009

Je tiens a corriger mon commentaire précédents. C'est pas la source qui est vraiment sans interêt et contre performant mais son exemple d'utilisation.

Désolé
cs_marm0tte
Messages postés
200
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
18 janvier 2009

Je trouve vraiment pas ca utile perso.
Redimensionner des images en html c'est une mauvaise pratique et ca diminue les performance d'un site.

Perso pour moi c'est sans interêt.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

Il n'y a pas de mal, merci pour la note.
Etn3000
Messages postés
39
Date d'inscription
mercredi 30 juin 2010
Statut
Membre
Dernière intervention
10 décembre 2010
1
Ah ok, j'ai cru. Toutes mes excuses.
masternico
Messages postés
494
Date d'inscription
dimanche 5 octobre 2003
Statut
Membre
Dernière intervention
1 septembre 2011

non, car comme l'a déjà souligné neigedhiver, la fonction getimagesize ne fait pas partie de la gd

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.