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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 879 fois - Téléchargée 17 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

Messages postés
19
Date d'inscription
dimanche 22 octobre 2000
Statut
Membre
Dernière intervention
23 janvier 2008

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 ;)
Messages postés
79
Date d'inscription
samedi 25 septembre 2004
Statut
Membre
Dernière intervention
31 octobre 2011
2
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^^)
Messages postés
1
Date d'inscription
samedi 15 décembre 2007
Statut
Membre
Dernière intervention
21 janvier 2008

C'est exactement ce que je cherchais!

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

Merci ;)
Messages postés
493
Date d'inscription
jeudi 7 juillet 2005
Statut
Membre
Dernière intervention
24 mai 2017
2
Il serait plus utile si le poids est réduit
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
36
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.