Reduction d'une image à l'écran par rapport à une taille maxi

0/5 (9 avis)

Snippet vu 11 277 fois - Téléchargée 20 fois

Contenu du snippet

Renvoi une chaine contenant le lien et les dimensions d'une image en fonction de valeurs maximales et en gardant les proportions.
Si l'image n'existe pas elle est remplacée par une image de substitution (facultatif).

Pratique pour que des photos rentrent toujours dans un cadre sans le déformer et sans déformer l'image.

Source / Exemple :


<?PHP
function TailleImage($LienImage, $LargeurMax, $HauteurMax, $ImageRemplacement=''){
// Renvoi une chaine contenant le lien et les dimensions d'une image
// en fonction de valeurs maximales et en gardant les proportions.
// Si l'image n'existe pas elle est remplacée par $ImageRemplacement (facultatif)
// Exemple :
//    $Image=TailleImage("Image.jpg", 300, 200, "Logo.jpg");
//    echo "<Img $Image>";

  $Size = @getimagesize($LienImage);
  if (!empty($Size[0]) and !empty($Size[1])){
    $RapportImage = $Size[1] / $Size[0];
    $RapportZone  = $HauteurMax / $LargeurMax;

    if ($RapportImage < $RapportZone){
      $Largeur = $LargeurMax;
      $Hauteur = round($LargeurMax * $RapportImage);
    }
    else{
      $Hauteur = $HauteurMax;
      $Largeur = round($HauteurMax / $RapportImage);
    }

    $Chaine= (!empty($Largeur) and !empty($Hauteur)) ? 'Src="'.$LienImage.'" Width="'.$Largeur.'" Height="'.$Hauteur.'"' : 'Src="'.$LienImage.'" Width="'.$LargeurMax.'" Height="'.$HauteurMax.'"';
  }
  else
    $Chaine='Src="'.$ImageRemplacement.'" Width="'.$LargeurMax.'" Height="'.$HauteurMax.'"';

  return $Chaine;
}

// Exemple : 
$Image = TailleImage("Image.jpg", 300, 200, "Logo.jpg");
echo "<Img ".$Image.">";
?>

A voir également

Ajouter un commentaire Commentaires
MagicManu Messages postés 19 Date d'inscription dimanche 22 octobre 2000 Statut Membre Dernière intervention 23 janvier 2008
14 avril 2008 à 09:04
Merci pour ton commentaire et pour avoir compris le but de cette fonction ;)

Comme je travaille en largeur fixe quelque soit l'écran je n'ai pas eu ce besoin mais bien sûr il peut être adapté à chacun ;)
lynxtyle Messages postés 79 Date d'inscription samedi 25 septembre 2004 Statut Membre Dernière intervention 31 octobre 2011 2
14 avril 2008 à 04:31
Je sais pas ce qu'ils ont à vouloir réduire le poids de l'image chargé... J'ai toujours pas compris pourquoi ils adorent surcharger le serveur à calculer une miniature vu les bandes passantes des connexions actuelles (et techniquement il est plus intéressant si tu veux produire une miniature de le faire une bonne fois pour toute quand tu upload ton image sur le serveur et non à chaque fois que tu la download depuis le serveur...)

Bon passons au code :
très sympa petit morceau de code... pour la part je l'ai un peu modifier pour qu'il redimentionne dynamiquement en fonction de la taille total de la fenetre (si par exemple tu passe en plein écran ou que tu réduit la taille de l'écran), j'ai aussi mis l'image de substitution en automatique (ça me parait plus logique que de dire à chaque fois si il y a une erreur mettre le logo d'erreur...^^ par contre j'ai fait un système on/off pour celui-ci : si tu met rien ou "on" tu as le logo d'erreur si il y a un souci, sinon pour "off" il mettra rien...)

Je crois que c'est un peu près tout... donc je met 10/10 car ton code fait bien ce qu'il dit (mais peut être améliorable comme tu le vois^^)
bluestorm62 Messages postés 1 Date d'inscription samedi 15 décembre 2007 Statut Membre Dernière intervention 21 janvier 2008
21 janv. 2008 à 21:01
C'est exactement ce que je cherchais!

Pouvoir afficher une image dans un tableau sans déformer quoique ce soit...

Merci ;)
cs_stay Messages postés 493 Date d'inscription jeudi 7 juillet 2005 Statut Membre Dernière intervention 24 mai 2017 4
14 nov. 2007 à 13:50
Il serait plus utile si le poids est réduit
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 sept. 2007 à 21:00
et si tu veux une hauteur fixee mais une largeur variable ?
et si tu veux que ton image fasse MINIMUM $X en width et Maximum $Y en height, tout en gardant la proportionalite, si on ne peut pas respecter les trois contraintes, alors on pourra negliger l'une des trois, au choix (choix reserve a l'utilisateur...)
Afficher les 9 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.