Snippet : redimensionner un image sans utiliser la biblio gd

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

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.